HASH
Die Klasse in Python 3
Perfektionierter RC4 von Ron Rivest mit N = 256 Spielkarten
Letzte Änderungen
Der Parameter a nimmt alle Werte von null bis 62 an,
nicht 128 wie in Spritz oder 240 oder auch 241 wie zuvor. Vor der Ausgabe wird
die Funktion Shuffle dreimal aufgerufen. Damit ist die Hashfunktion jetzt
hundert Prozent sicher, wahrhaft sicher für die Ewigkeit.
Die
Funktion Shuffle wird in der Funktion Squeeze jetzt immer, für jeden
Wert des Parameters a, aufgerufen.
Zufallszahlen
Kurz gefasst
N Karten mischen, im Kreis, einem Ziffernblatt mit zwei Zeigern, anordnen.
Folgendes wird so oft wiederholt wie Zufallswerte benötigt werden.
Ein Zeiger wird immer um eins weitergedreht, der zweite Zeigen um den Wert,
auf den der erste Zeiger zeigt. Der zweite Zeiger wird dann auf die Position gedreht,
auf die er zeigt. Die Karten, auf die beide Zeiger zeigen, werden vertauscht. Sie
weren so ständig weiter gemischt.
Der Wert, auf den der zweite Zeiger zeigt, ist der deterministisch berechnete
Zufallswert.
Eine abweichende, ungerade Schrittweite w = 3, 5, 7, … ist ebenso gut.
Aufbauend auf dieser Idee, können wir auch eine einfache Hashfunktion
konstruieren.
Dies ist viel einfacher
und mindestens ebenso sicher wie SHA-2. Auch wenn SHA-2 wahrscheinlich
sicher ist.
Spritz/RC4 ist noch besser entsprechend dem Motto:
- Beautiful is better than ugly
- Simple is better than complex
- Complex is better than complicated
- Readability counts
Sensation
- vermeintlich sicherer
NIST-Standard SHA-1 nach über 20 Jahren
geknackt.
Eine Hashfunktion, die tatsächlich
die Berechnung von Kollisionen praktisch zu 100 Prozent ausschließt.
SPRITZ-HASH ohne CRUSH
Quellcode in Python