Cuando usted XORRA un número aleatorio con un número no aleatorio, ¿eso le da un nuevo número aleatorio?

2

XOR tiene la siguiente tabla de verdad:

0, 0 : 0
0, 1 : 1
1, 0 : 1
1, 1 : 0

Entonces, por bit en una operación XOR, hay un 50% de probabilidad de que el resultado sea 1 y 50% de que sea 0. Si XOR un número aleatorio (todas las posibilidades eran igualmente probables cuando se crearon, por ejemplo, desde un CSPRNG ) y un número no aleatorio, ¿aparece ese resultado aleatorio?

    
pregunta jburcham 05.10.2018 - 20:39
fuente

1 respuesta

7

Un valor aleatorio no pierde ninguna de su aleatoriedad si se combina sin pérdida de información con un valor no aleatorio. XOR contra algún valor fijo (es decir, no aleatorio) no causa tal pérdida de información, es decir, el valor aleatorio original se puede recrear a partir del resultado simplemente XORing nuevamente con el mismo valor fijo. Contrariamente a eso, AND u OR causan la pérdida de información, es decir, no pueden revertirse.

Pero la aleatoriedad tampoco aumenta. Por lo tanto, si XOR un valor aleatorio de 8 bits a un valor no aleatorio de 32 bits, se obtendrán 8 bits de aleatoriedad, no 32 bits.

    
respondido por el Steffen Ullrich 05.10.2018 - 20:42
fuente

Lea otras preguntas en las etiquetas