AFAIK, bu tür "sihirli" değerler aşağıdaki iki özelliğe sahiptir:
- Bir şekilde benzersizler ve rastgele görünüyorlar.
- Cebirsel işlemlere tekrar tekrar katılabilirler; yani, belirli bir işlemi (çarpma veya üs alma) defalarca uyguladıktan sonra bile, "sihirli" değer hala yeni değerler üretebilir.
MD5'te benzer bir durum bulabilirsiniz . Aşağıdaki satırı düşünün:
k[i] := floor(abs(sin(i + 1)) × (2 pow 32))
Burada, sin(i + 1)
sihirli değerler üretmek içindir; benzersiz, rastgele görünümlü ve bir çok şey için çalışabilir i
. (Aslında, i
0..63 arasında değişir).
Düzenleme: TEA ile ilgili orijinal makaleyi okuduğunuzda, "Steven Stadnicki" tarafından verilen cevabın doğru olduğu anlaşılmaktadır. Sihirli sabitin isim deltası olduğuna dikkat edin:
Her turda farklı bir delta katsayısı kullanılır, böylece katlamanın hiçbir biti sık sık değişmez. Algoritmanın deltanın değerine çok duyarlı olmadığından şüpheleniyoruz ve sadece kötü bir değerden kaçınmamız gerekiyor. Delta'nın kesilme veya en yakın yuvarlama ile garip olduğu ortaya çıkacaktır, bu nedenle toplam rakamlarının değişmesini sağlamak için ek önlem alınması gerekmez.
Sadece 32 kat delta kullanıldığından (her turda bir tane), algoritmanın herhangi bir deltaya çok duyarlı olmaması garip değildir. (Daha fazla bilgi için Steven Stadnicki'nin cevabına bakınız.)
Düzenleme 2: Bu arada, MD4 işlemlerinde "sihirli" sabitler olarak 2 (0x5a827999) ve 3 (0x6ed9eba1) kareköklerini kullanır. Kitabın Bölüm 5.4.4 Ağ Güvenliği: Özel İletişim Kamu Dünyada da bu açıklıyor:
Tasarımcıların bilerek sabitin şeytani değerini seçmediklerini göstermek için, sabit 2'nin kareköküne dayanmaktadır.
Bu açıklama, Gilles tarafından yapılan bir yorumda aşağıda belirtilen nokta ile aynıdır.