有没有一种方法可以生成字符串的哈希值,以便哈希值本身具有特定的长度?我有一个生成 41 字节哈希值 (SHA-1) 的函数,但我需要它最大为 33 字节(由于某些硬件限制)。如果我将 41 字节哈希截断为 33,我可能(当然!)失去了唯一性。
或者实际上我认为 MD5 算法会很适合,如果我能在你的帮助下找到一些 C 代码的话。
编辑:感谢大家的快速且知识渊博的回复。我选择使用 MD5 哈希,它非常适合我的目的。唯一性是一个重要问题,但我不希望这些哈希值的数量在任何给定时间都非常大 - 这些哈希值代表家庭 LAN 上的软件服务器,因此最多会有 5 个,也许 10 个正在运行。
如果我将 41 字节哈希截断为 33,我可能(当然!)失去了唯一性。
是什么让你觉得你现在已经独一无二了?是的,当您只使用 33 字节而不是 41 字节时,显然发生冲突的可能性更高,但是您需要充分意识到,对于任何使用哈希有意义的情况,冲突只是不太可能,而不是不可能。首先。如果您要对超过 41 字节的数据进行散列,则可能的组合显然比可用的散列要多。
现在,我不知道您是否最好截断 SHA-1 哈希值或使用更短的哈希值(例如 MD5)。我认为在保留整个散列时我会更有信心,但是 MD5 有已知漏洞 http://en.wikipedia.org/wiki/MD5#Vulnerability对于您的特定应用程序来说,这可能是也可能不是问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)