【发布时间】:2013-03-05 18:09:05
【问题描述】:
我知道原始的 md5 算法会产生 128 位散列。
关注 Mark Adler 的 cmets here 我有兴趣获得一个好的 64 位哈希。 有没有办法使用 OpenSSL 创建基于 md5 的 64 位哈希? (md5 看起来足以满足我的需求)。 如果没有,OpenSSL 库中是否有另一种算法可以以不低于 md5 的质量完成这项工作(当然长度除外)?
【问题讨论】:
-
至少和 md5 一样多。
-
我的意思是,您的哈希函数需要什么标准?速度?密码强度?整个散列空间的均匀分布?碰撞几率低?对单比特变化敏感吗?
-
我希望冲突的可能性至少与 md5 提供的一样低。
-
如果您只使用 64 位,而 MD5 使用 128 位,则无法使用。但看起来下面已经有一个可能适合您的答案。
-
我明白这一点。但是由于我的数据库条目的数量并不多,我不需要这么长的哈希,正如 Adler 在我的帖子中提到的链接中指出的那样。所以,确实我不会想出像 md5 那样强的散列,因为它的长度很短,但我希望它在算法上与 md5 在冲突方面一样强。让我们这样说吧:我希望它能够防止小型数据库上的冲突,就像 md5 对 2^32 倍大的数据库所做的那样(如果你转到上述链接并搜索字符串“A good hash algorithm”,你会明白为什么我写的是 2^32 而不是 2^64)。