2010-09-29 11 views
21

İşte 3 örnek md5Bir karma (md5, sha1) herhangi bir alt dizgisi diğerinden daha "rastgele" midir?

$ md5 -s "1" && md5 -s "2" && md5 -s "3" 
MD5 ("1") = c4ca4238a0b923820dcc509a6f75849b 
MD5 ("2") = c81e728d9d4c2f636f067f89cc14862c 
MD5 ("3") = eccbc87e4b5ce2fe28308fd9f2a7baf3 

herhangi karma 8 karakterden almak istedim Say sağlamalarının bu. Çığın başlangıç ​​kısmı, özellikle sondan daha “rastgele” midir? orta? Ya da tüm alt kümeler eşit "rasgele"?

+0

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

+0

Ben sadece bu soru sormak üzereydim .. – insaner

cevap

17

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.

+0

Bu "aslında rastgeleliği" gösterdiği gibi kabul ediyorum. Teşekkürler Kurige! –

11

İyi bir hashın tüm alt dizeleri (ve md5, kriptografik olarak güvensiz olmasına rağmen makul derecede iyidir) eşit şekilde rasgeledir, bu nedenle, evet, diziden istediğiniz herhangi bir parçayı alın, eşit olarak dağıtılmalıdır.

9

Nitpick: "Rastgele", burada kullanılan yanlış sözcükler, çünkü karma işlevleri deterministiktir.

Ne demek istediğimi yanıtlamak için :), hash işlevlerinin istenen bir özelliği Avalanche effect: temel olarak, her bir girdi girdisinin çıkışta büyük değişikliklere neden olmasını sağlamaktır. Bu nedenle, iyi tasarlanmış bir karma için, her alt-tabaka eşit olarak sık sık etkilenmelidir ("rastgele olarak" gibi).

+1

Bu sebepten ötürü sözleri rastgele seçtim :) çığ etkisine bağlantı için +1. –

İlgili konular