Kendimi merak ediyordum, bu yüzden devam ettim ve bunu test etmek için program yazdım. Kodu derlemek için Crypto++'a ihtiyacınız olacak.
Yasal Uyarı: Kriptografi söz konusu olduğunda, ya da sadece genel olarak matematikte, kendimi sadece ayağımda vurmaya yetecek kadar biliyorum. Öyleyse, aşağıdaki sonuçları bir tuz tohumu ile alın ve kullandığım araçlarla ilgili sadece bilgi sahibi olduğumu unutmayın.
Yalnızca üç alt dizeyi örnekledim: ilk 8 bayt, orta 8 bayt ve son 8 bayt. Uzun lafın kısası, eşit derecede rasgele. Bununla birlikte, daha küçük bir örnek alanı kullanıldığında, son 8 bitin biraz daha rasgele olduğu anlaşılır. Örnekleme alanı ne kadar büyükse, üç alt dizinin tümü daha yakın rastgeleye yaklaşır.
1000 yineleme:
First: 0.995914
Middle: 0.996546
Last: 0.998104
5000 yineleme:
First: 0.998387
Middle: 0.998624
Last: 0.999501
10000 yineleme:
First: 0.999614
Middle: 0.999457
Last: 1
30000 yineleme:
012.351.
First: 1
Middle: 1
Last: 1
"rasgelelik" Kripto ++ 'ın MaurerRandomnessTest sınıf tarafından ölçülür. Referans için, yukarıdaki koddan derlenen yürütülebilir dosya 0.632411
rastgelelik değerine sahiptir ve Project Gutenburg'dan indirilen Shakespeare'in Macbeth'inin bir kopyası 0.566991
rastgelelik değerine sahiptir.
Kanımca "rastgele" burada doğru kelime değildir. Karma fonksiyonlar, elde ettikleri gibi deterministtir; Hiç bir rastlantısallık yoktur. Muhtemelen bir karmanın bir alt dizisinin, orjinal ile aynı çarpışma direncine sahip olup olmadığını soruyorsunuz (tabi ki farklı uzunluk için muhasebe). – Jens
Ben sadece bu soru sormak üzereydim .. – insaner