Wolfram Language

Demuestre el efecto de avalancha de una función Hash

Las funciones Hash juegan un papel fundamental en la criptografía moderna. Una característica importante y deseable de una buena función Hash es la no correlación de entrada y salida, o el llamado "efecto de avalancha", lo que significa que un pequeño cambio en la entrada da como resultado un cambio significativo en la salida, haciéndolo estadísticamente indistinguible de al azar. La función Hash puede producir una variedad de hashes y devolverlos en múltiples formatos, lo que facilita el estudio de las propiedades de Hash.

Una función Hash demuestra el efecto de avalancha si un solo bit invertido en la entrada causa un cambio de, en promedio, la mitad de los bits de la salida. Este ejemplo examina si la función "Keccak256" Hash tiene esta propiedad.

Genere una lista de 10 000 enteros aleatorios de 256 bits.

Defina una función que invierta un bit aleatorio en un entero.

Cree un par de enteros que difieran en un bit.

De vuelta a un bit al azar para cada entero.

Compruebe que la HammingDistance es exactamente 1 para cada par de enteros.

Para hacer hash en los bits reales de los enteros, debe convertir cada entero en un ByteArray.

Hash las matrices de bytes con el hash "Keccak256".

Calcule la distancia Hamming para cada par de enteros.

Calcule la media de las distancias Hamming resultantes del hash.

Tenga en cuenta que el valor medio de 128 aquí es el mismo que si estuviera comparando pares enteros aleatorios, lo que muestra que "Keccak256" codifica sus entradas de manera muy efectiva.

Calcule la desviación estándar.

Haga un histograma de las distancias y el PDF correspondiente de la distribución normal con la media calculada y la desviación estándar.

Ejemplos relacionados

de en fr ja ko pt-br zh