Wolfram Language

Den Lawineneffekt einer Hashfunktion demonstrieren

Hash-Funktionen spielen in der modernen Kryptographie eine grundlegende Rolle. Ein wichtiges und wünschenswertes Merkmal einer guten Hash-Funktion ist die Nicht-Korrelation von Input und Output oder der so genannte "Lawineneffekt", der die Fähigkeit eines Algorithmus beschreibt, bei einer minimalen Änderung der Eingabe eine völlig andere Ausgabe zu erzeugen. Die Hash-Funktion kann eine Vielzahl von Hashes erzeugen und diese in verschiedenen Formaten zurückgeben. Dies macht es ganz einfach, Hash-Eigenschaften zu untersuchen.

Eine Hash-Funktion weist den Lawineneffekt auf, wenn ein einzelnes gespiegeltes Bit im Eingang eine Änderung von durchschnittlich der Hälfte der Bits des Ausgangs bewirkt. In diesem Beispiel wird untersucht, ob die "Keccak256" Hash-Funktion hat diese Eigenschaft hat.

Erstellen Sie eine Liste mit 10.000 zufälligen 256-Bit Ganzzahlen.

Definieren Sie eine Funktion, die ein zufälliges Bit in einer ganzen Zahl umkehrt.

Erstellen Sie ein Paar von ganzen Zahlen, die sich um ein Bit unterscheiden.

Vertauschen Sie in jeder ganzen Zahl ein Bit.

Überprüfen Sie, ob die Zahl der HammingDistance genau 1 für jedes Paar ganzer Zahlen ist.

Um die Hash-Funktion auf die Bits der ganzen Zahlen anzuwenden, müssen Sie jede ganze Zahl in ein ByteArray verwandeln.

Hashen Sie die Byte-Arrays mit dem "Keccak256"-Hash.

Berechnen Sie die Hamming-Distanz für jedes Ganzzahlenpaar.

Berechnen Sie den Mittelwert der gehashten Hamming-Distanzen.

Beachten Sie, dass der Mittelwert von 128 hier derselbe ist, als ob Sie zufällige ganze Zahlenpaare vergleichen würden, was zeigt, dass "Keccak256" die Eingaben sehr effektiv verschlüsselt.

Berechnen Sie die Standardabweichung.

Erstellen Sie ein Histogramm der Abstände und die entsprechende Wahrscheinlichkeitsdichtefunktion der Normalverteilung mit dem berechneten Mittelwert und der Standardabweichung.

Verwandte Beispiele

en es fr ja ko pt-br zh