Suponiendo que he generado datos aleatorios de CryptGenRandom (o PRNG similar), ¿en qué momento la comparación con los valores hace que no sea tan aleatorio que sea inútil? ¿O es lo suficientemente aleatorio para que sea lo suficientemente aleatorio?
Básicamente estoy viendo un algoritmo de generación de claves que genera un valor de 8-9 dígitos de 0-9 a partir de la salida de CryptGenRandom. Me doy cuenta de que la salida final es limitada de todos modos, pero es una implementación de protocolo que tiene 8 dígitos de 0-9.
Dicho de otra manera, si necesito generar tales valores, ¿cuál es el mejor enfoque?
EDITAR: Mi primera pregunta fue más en sentido general y la segunda fue una aclaración sobre lo que realmente necesito lograr. Supongamos que he generado un valor aleatorio de 256 bits. Necesito reducir los 256 bits para decir 64 bits, pero restringirlo aún más a un valor numérico (en este caso, 8 dígitos).
Eliminar la mitad de los bits tiene un efecto en la utilidad de ser criptográficamente aleatorio (ya que reduce la entropía, ¿o es esto una suposición falsa?). Reducir esto aún más para ser simplemente valores numéricos seguramente también tiene un efecto en la utilidad. Dado que entonces,
P1: En un sentido general, si tuviera que reducir la longitud de un valor aleatorio, ¿qué métodos debería evitar?
P2: O más específicamente, ¿estoy siendo tonto por generar un número de 8 dígitos?