Wolfram Language

Démontrez l'effet d'avalanche d'une fonction de hachage

Les fonctions de hachage jouent un rôle fondamental dans la cryptographie moderne. La non-corrélation de l'entrée et de la sortie, appelée "effet d'avalanche", est une caractéristique importante et souhaitable d'une bonne fonction de hachage, ce qui signifie qu'une petite variation de l'entrée entraîne une variation significative de la sortie, la rendant statistiquement impossible à distinguer du hasard. La fonction Hash permet de produire une variété de hachages et de les renvoyer sous plusieurs formats, ce qui facilite l'étude des propriétés de hachage.

Une fonction de hachage démontre l'effet d'avalanche si un seul bit inversé dans l'entrée provoque un changement de, en moyenne, la moitié des bits de la sortie. Dans cet exemple, on examine si le "Keccak256" de la fonction Hash a cette propriété.

Générez une liste de 10 000 entiers aléatoires de 256 bits.

Définissez une fonction qui inverse un bit aléatoire dans un entier.

Créez une paire d'entiers qui diffèrent d'un bit.

Inversez un bit aléatoire pour chaque entier.

Vérifiez que la distance de HammingDistance est précisément de 1 pour chaque paire d'entiers.

Pour faire le hachage sur les bits réels des entiers, vous devez transformer chaque entier en un ByteArray.

Utilisez la fonction Hash pour hacher les tableaux d'octets avec le hachage "Keccak256".

Calculez la distance de Hamming pour chaque paire d'entiers.

Calculez la moyenne des distances de Hamming hachées.

Notez que la valeur moyenne de 128 est la même que si vous compariez des paires d'entiers aléatoires, montrant que le "Keccak256" brouille ses entrées très efficacement.

Calculez l'écart-type.

Réalisez un histogramme des distances et le PDF correspondant de la distribution normale avec la moyenne calculée et l'écart-type.

Exemples connexes

de en es ja ko pt-br zh