AFAIK, nilai "ajaib" tersebut memiliki dua properti berikut:
- Entah bagaimana mereka unik, dan terlihat acak.
- Mereka dapat mengambil bagian dalam operasi aljabar berulang kali; yaitu bahkan setelah menerapkan beberapa operasi tertentu (katakanlah multiplikasi atau eksponensial) berkali-kali, nilai "ajaib" masih dapat menghasilkan nilai baru.
Anda dapat menemukan kasus serupa di MD5 . Pertimbangkan baris berikut:
k[i] := floor(abs(sin(i + 1)) × (2 pow 32))
Di sini, sin(i + 1)
dimaksudkan untuk menghasilkan nilai-nilai ajaib; yang unik, tampak acak, dan dapat bekerja untuk banyak i
. (Sebenarnya, i
berkisar 0,63).
Sunting: Membaca makalah asli tentang TEA , orang memahami bahwa jawaban yang diberikan oleh "Steven Stadnicki" benar. Perhatikan bahwa konstanta ajaib adalah nama delta:
Kelipatan delta yang berbeda digunakan di setiap putaran sehingga tidak ada kelipatan dari delta yang tidak akan sering berubah. Kami menduga algoritme tidak terlalu sensitif terhadap nilai delta dan kami hanya perlu menghindari nilai yang buruk. Perlu dicatat bahwa delta ternyata aneh dengan pemotongan atau pembulatan terdekat, sehingga tidak ada tindakan pencegahan tambahan yang diperlukan untuk memastikan bahwa semua digit perubahan jumlah.
Karena hanya 32 kelipatan dari delta yang digunakan (satu per setiap putaran), tidak aneh bahwa algoritma ini tidak terlalu sensitif terhadap delta tertentu. (Lihat jawaban Steven Stadnicki untuk info lebih lanjut.)
Sunting 2: Secara kebetulan, MD4 menggunakan akar kuadrat dari 2 (0x5a827999) dan 3 (0x6ed9eba1) sebagai konstanta "ajaib" dalam operasinya. Bagian 5.4.4 buku Keamanan Jaringan: Komunikasi Pribadi di Dunia Publik menjelaskan hal ini dengan baik:
Untuk menunjukkan bahwa desainer tidak sengaja memilih nilai jahat dari konstanta, konstanta didasarkan pada akar kuadrat dari 2.
Penjelasan ini sama dengan poin yang dibuat di bawah ini dalam komentar oleh Gilles.