MD5等作为哈希函数

时间:2010-11-05 18:44:11

标签: hash

假设您计划设计一个哈希函数,它将生成0-256之间的密钥。使用MD5-digest的前2位数是一个统一分布的好主意吗?你怎么看待这个? md5()某些单词(2-10个字母)是否昂贵?

我知道这是对要求的粗略定义,但讨论这个问题会很棒。

4 个答案:

答案 0 :(得分:4)

没有理由将加密强度哈希用于生成3位哈希这么简单的事情。你最好在那里使用更简单的哈希。

我不确定MD5相对于其他人有多贵,但是有很多更好的方法可以创建一个小哈希(请参阅this article了解一些算法的想法)。

答案 1 :(得分:3)

您可以尝试calculating一个8位CRC

答案 2 :(得分:1)

MD5旨在将输入均匀地扩展到所有输出字节,因此它与任何其他常规哈希函数一样好 - 如果您只需要256个值,则听起来有点过分。

注意MD5的输出是128字节(16字节),它只是十六进制数字的文本表示 - 所以实际上没有MD5的前两位数 - 只需使用底部的8位。

答案 3 :(得分:0)

你还没有解释你将如何使用哈希,以及你将如何处理不可避免的冲突,因为你只有256个输出值。

我认为即使是MD5(不再是加密安全的)对于可能的应用来说也是过度的。

我可能会使用CRC(循环冗余校验)算法,为您生成一个16位或32位数字,并且可能会给您足够好的分配。