AFAIK, ces valeurs "magiques" ont les deux propriétés suivantes:
- Ils sont en quelque sorte uniques et semblent aléatoires.
- Ils peuvent participer aux opérations algébriques à plusieurs reprises; c'est-à-dire que même après avoir appliqué plusieurs fois une opération spécifique (par exemple multiplication ou exponentiation), la valeur "magique" est toujours capable de générer de nouvelles valeurs.
Vous pouvez trouver un cas similaire dans le MD5 . Considérez la ligne suivante:
k[i] := floor(abs(sin(i + 1)) × (2 pow 32))
Ici, sin(i + 1)
est destiné à générer des valeurs magiques; qui sont uniques, d'aspect aléatoire, et peuvent fonctionner pour beaucoup de i
. (En fait, i
varie de 0 à 63).
Edit: En lisant l' article original sur TEA , on comprend que la réponse donnée par "Steven Stadnicki" est correcte. Notez que la constante magique est le nom delta:
Un multiple différent de delta est utilisé à chaque tour afin qu'aucun bit du multiple ne change fréquemment. Nous pensons que l'algorithme n'est pas très sensible à la valeur de delta et nous devons simplement éviter une mauvaise valeur. On notera que le delta s'avère étrange avec la troncature ou l'arrondi le plus proche, donc aucune précaution supplémentaire n'est nécessaire pour garantir que tous les chiffres de la somme changent.
Étant donné que seulement 32 multiples de delta sont utilisés (un par tour), il n'est pas étrange que l'algorithme ne soit pas très sensible à un delta spécifique. (Voir la réponse de Steven Stadnicki pour plus d'informations.)
Edit 2: Incidemment, MD4 utilise des racines carrées de 2 (0x5a827999) et 3 (0x6ed9eba1) comme constantes "magiques" dans ses opérations. La section 5.4.4 du livre Network Security: Private Communication in a Public World l' explique bien:
Pour montrer que les concepteurs n'ont pas délibérément choisi une valeur diabolique de la constante, la constante est basée sur la racine carrée de 2.
Cette explication est la même que la remarque faite ci-dessous dans un commentaire de Gilles.