は任意の部分文字列のハッシュ(md5,sha1)より多いのでランダム"よりではありませんか?
質問
こちらは3例ではmd5ハッシュ
$ md5 -s "1" && md5 -s "2" && md5 -s "3"
MD5 ("1") = c4ca4238a0b923820dcc509a6f75849b
MD5 ("2") = c81e728d9d4c2f636f067f89cc14862c
MD5 ("3") = eccbc87e4b5ce2fe28308fd9f2a7baf3
と言いたかったのは8文字からハッシュ.当初は一部のハッシュにとって特に"ランダム"によるでしょうか。手間がかかります。またはすべての部分文字列が等しく"ランダム?
解決
私は、自分自身興味がありました。あなたがコードをコンパイルするために暗号++ の必要があります。
免責事項: それは、暗号化、または一般にだけでも数学に来るとき、私は足で自分自身を撮影するだけでは十分知っています。だから、塩の粒と、以下の結果を取ると、私は私が使用しているツールのぞんざいな知識を持っていることに注意してください。
最初の8バイト、中央の8バイト、最後の8バイト:私は3つのだけのサブストリングをサンプリング。かいつまんで、彼らは同じようにランダムです。
小さなサンプル空間を使用した場合、最後の8ビットは、わずかによりランダムであるかのようにしかし、それが表示されます。サンプリング間隔が大きいほど、より近い3つのすべての部分文字列は、完全なランダムに近づいています。
<時間>1000回のイテレーションます:
First: 0.995914
Middle: 0.996546
Last: 0.998104
5000回の繰り返し:
First: 0.998387
Middle: 0.998624
Last: 0.999501
10000回の繰り返し:
First: 0.999614
Middle: 0.999457
Last: 1
30000回の繰り返し:
First: 1
Middle: 1
Last: 1
<時間>
"ランダム性は、" 暗号++の MaurerRandomnessTest のクラスによって測定されます。参考のため、上記のコードからコンパイルされた実行可能では0.632411
とシェイクスピアのマクベスのコピーのランダム値が0.566991
のランダム値を持つプロジェクト・グーテンベルクからダウンロードしています。
他のヒント
良いハッシュのすべての部分文字列は(とMD5は暗号的に安全ではないにもかかわらず、合理的に良いですが)も同様にランダムなので、はい、文字列からのような任意のビットあなたを取る、彼らは均等に分散する必要があります。
Nitpick:ハッシュ関数は、確定しているので、「ランダム」は、ここで使用するための間違った言葉です。
。何平均:)に答えるためとして、ハッシュ関数の望ましい特性は、<雪崩効果を達成しています/ A>:基本的には、出力に急激な変化の原因入力のすべてのビットを持っています。だから、うまく設計されたハッシュのために、すべての部分文字列は、他のどのよう(「がのランダムとなる」)も同様に、多くの場合、影響を受けるべきである。
測定は、乱数の発生源の出力のハッシュ関数で使用できない統計的試験を行い擬似乱数生成器.に応じて ハンドブック応用の暗号 §5.4.4(サンプルの章の無料)があり、基本試験:
- 周波数テスト(monobit試験)
- シリアル試験(ビット試験)
- ポーカー試験
- 走試験
- 自己相関試験
そして、もちろん、あのMaurerの普遍的な統計的試験kurigeて挙げられる。