mač*_*ček 21 md5 sha1 hashcode sha256
这是md5哈希的3个示例
$ md5 -s "1" && md5 -s "2" && md5 -s "3"
MD5 ("1") = c4ca4238a0b923820dcc509a6f75849b
MD5 ("2") = c81e728d9d4c2f636f067f89cc14862c
MD5 ("3") = eccbc87e4b5ce2fe28308fd9f2a7baf3
Run Code Online (Sandbox Code Playgroud)
说我想从任何哈希中取8个字符.哈希的开头部分是否比结尾更"随机"?中间?或者所有子串都是"随机"的?
kur*_*ige 19
我自己很好奇,所以我继续写了一个程序来测试它.你需要Crypto ++来编译代码.
免责声明:当涉及密码学,甚至只是数学时,我知道足以让自己陷入困境.因此,请考虑以下结果,并记住我只对我正在使用的工具有一个粗略的了解.
我只采样了三个子串:前8个字节,中间8个字节和后8个字节.长话短说,它们同样随机.
但是,当使用较小的样本空间时,看起来好像最后8位稍微更随机.采样空间越大,所有三个子串越接近完全随机性.
1000次迭代:
First: 0.995914
Middle: 0.996546
Last: 0.998104
Run Code Online (Sandbox Code Playgroud)
5000次迭代:
First: 0.998387
Middle: 0.998624
Last: 0.999501
Run Code Online (Sandbox Code Playgroud)
10000次迭代:
First: 0.999614
Middle: 0.999457
Last: 1
Run Code Online (Sandbox Code Playgroud)
30000次迭代:
First: 1
Middle: 1
Last: 1
Run Code Online (Sandbox Code Playgroud)
"随机性"由Crypto ++的MaurerRandomnessTest类测量.作为参考,从上面的代码编译的可执行文件具有随机性值,0.632411并且从Project Gutenburg下载的莎士比亚的Macbeth的副本具有随机性值0.566991.