AFAIK, solche "magischen" Werte haben die folgenden zwei Eigenschaften:
- Sie sind irgendwie einzigartig und sehen zufällig aus.
- Sie können wiederholt an algebraischen Operationen teilnehmen. dh selbst nach mehrmaliger Anwendung einer bestimmten Operation (z. B. Multiplikation oder Exponentiation) kann der "magische" Wert immer noch neue Werte erzeugen.
Möglicherweise finden Sie einen ähnlichen Fall im MD5 . Betrachten Sie die folgende Zeile:
k[i] := floor(abs(sin(i + 1)) × (2 pow 32))
Hier sin(i + 1)
sollen magische Werte erzeugt werden; die einzigartig sind, zufällig aussehen und für viele funktionieren können i
. (Tatsächlich i
reicht in 0..63).
Bearbeiten: Lesen Sie die Originalarbeit auf TEA , versteht man, dass die Antwort von "Steven Stadnicki" richtig ist. Beachten Sie, dass die magische Konstante der Name Delta ist:
In jeder Runde wird ein anderes Vielfaches von Delta verwendet, sodass sich kein Bit des Vielfachen häufig ändert. Wir vermuten, dass der Algorithmus nicht sehr empfindlich auf den Wert von Delta reagiert und wir müssen lediglich einen schlechten Wert vermeiden. Es ist anzumerken, dass sich Delta als ungerade mit Kürzung oder nächster Rundung herausstellt, so dass keine zusätzlichen Vorkehrungen erforderlich sind, um sicherzustellen, dass sich alle Ziffern der Summe ändern.
Da nur 32 Vielfache von Delta verwendet werden (eines pro Runde), ist es nicht ungewöhnlich, dass der Algorithmus für ein bestimmtes Delta nicht sehr empfindlich ist. (Weitere Informationen finden Sie in der Antwort von Steven Stadnicki.)
Edit 2: übrigens MD4 verwendet Quadratwurzeln 2 (0x5a827999) und 3 (0x6ed9eba1) als "magische" Konstanten in ihrer Tätigkeit. Abschnitt 5.4.4 des Buches Netzwerksicherheit: Private Kommunikation in einer öffentlichen Welt erklärt dies gut:
Um zu zeigen, dass die Designer nicht absichtlich einen teuflischen Wert für die Konstante gewählt haben, basiert die Konstante auf der Quadratwurzel von 2.
Diese Erklärung entspricht dem unten in einem Kommentar von Gilles gemachten Punkt.