AFAIK, tales valores "mágicos" tienen las siguientes dos propiedades:
- De alguna manera son únicos y parecen aleatorios.
- Pueden participar en operaciones algebraicas repetidamente; es decir, incluso después de aplicar alguna operación específica (por ejemplo, multiplicación o exponenciación) muchas veces, el valor "mágico" aún puede generar nuevos valores.
Puede encontrar un caso similar en el MD5 . Considere la siguiente línea:
k[i] := floor(abs(sin(i + 1)) × (2 pow 32))
Aquí, sin(i + 1)
está destinado a generar valores mágicos; que son únicos, de aspecto aleatorio y pueden funcionar para muchos i
. (En realidad, i
varía en 0..63).
Editar: Al leer el documento original sobre TEA , uno entiende que la respuesta dada por "Steven Stadnicki" es correcta. Tenga en cuenta que la constante mágica es el nombre delta:
Se utiliza un múltiplo diferente de delta en cada ronda para que ningún bit del múltiplo no cambie con frecuencia. Sospechamos que el algoritmo no es muy sensible al valor de delta y simplemente necesitamos evitar un valor incorrecto. Se notará que el delta resulta ser extraño con el truncamiento o el redondeo más cercano, por lo que no se necesitan precauciones adicionales para garantizar que cambien todos los dígitos de la suma.
Como solo se usan 32 múltiplos de delta (uno por cada ronda), no es extraño que el algoritmo no sea muy sensible a ningún delta específico. (Vea la respuesta de Steven Stadnicki para más información).
Edición 2: Incidentalmente, MD4 usa raíces cuadradas de 2 (0x5a827999) y 3 (0x6ed9eba1) como constantes "mágicas" en sus operaciones. La sección 5.4.4 del libro Seguridad de la red: comunicación privada en un mundo público explica esto bien:
Para mostrar que los diseñadores no eligieron a propósito un valor diabólico de la constante, la constante se basa en la raíz cuadrada de 2.
Esta explicación es la misma que se señala a continuación en un comentario de Gilles.