Kip*_*Kip 12 language-agnostic hash md5
我想要创建一些数据对象的32位哈希.由于我不想编写自己的哈希函数并且md5可用,我目前的方法是使用md5哈希中的前32位(即前8个十六进制数字).这可以接受吗?
换句话说,md5哈希的前32位是否与任何其他子串一样"随机"? 或者有什么理由我更喜欢,比方说,最后的32位?或者可能将四个32位子串一起异或?
一些先发制人的澄清:
Joe*_*oey 11
对于任何良好的散列函数,各个位应该近似随机.因此,您应该安全地仅使用MD5哈希的前32位.
或者你也可以使用CRC32,计算速度要快得多(代码大约是20行).
换句话说,md5哈希的前32位是否与任何其他子串一样"随机"?
是.如果答案是否定的,MD5将不够安全.(当然,它有一些较小的加密缺点,但我不知道任何统计的缺点)