假设您正计划设计一个散列函数,它将生成0-256之间的键。使用MD5-digest的前2位对于均匀分布来说是个好主意吗?你对此有何看法?md5()一些单词(2-10个字母)很贵吗?
我知道这是一个粗略的需求定义,但如果能讨论这个就太好了。
发布于 2010-11-06 02:57:58
你可以尝试calculating一个8位的CRC。
发布于 2010-11-06 02:53:47
对于像生成3位数哈希这样简单的事情,没有理由使用加密强度哈希。您最好在那里使用更简单的散列。
我不确定相对于其他方法,MD5的开销有多大,但有很多更好的方法来创建小的散列(有关一些算法思想,请参阅this article )。
发布于 2010-11-06 02:50:27
MD5被设计成将输入均匀地分布在所有输出字节上,因此它和任何其他通用散列函数一样好-如果你只想要256个值,听起来有点夸张。
注意,MD5的输出是128字节(16字节),它只是文本表示的十六进制数字-所以实际上没有MD5的前两位-只使用底部的8位。
https://stackoverflow.com/questions/4109035
复制相似问题