【发布时间】:2020-12-11 12:38:19
【问题描述】:
从给定的字符串中,我使用MD5 生成 32 位唯一哈希码
MessageDigest.getInstance("MD5")
.digest("SOME-BIG-STRING").map("%02x".format(_)).mkString
//output: 47a8899bdd7213fb1baab6cd493474b4
是否可以生成 30 位而不是 32 位,如果这样做会有什么问题?
还有其他哈希算法可用于支持 30 个字符长和 1 万亿个唯一字符串的冲突概率吗?
安全性不重要,唯一性是必需的。
【问题讨论】:
-
这能回答你的问题吗? Hash function to produce a code of 30 chars?
-
md5 不安全。有一些方法可以故意生成碰撞输入。如果您的代码依赖 md5 不产生冲突,那可能是没有根据的。尤其是在以任何方式涉及用户提供的数据时。
-
我有 1 万亿个唯一字符串,想生成每个字符串对应的唯一哈希。最好的方法是什么?