16位哈希函数
是否有一个哈希函数返回 16 位十六进制值(因为 MD5 返回 32 位),或者是否有一个库(用于 C++),我可以在其中使用返回 16 位值的 MD5 或 SHA-1
Is there a hash function that returns a 16-digit hex value (as MD5 returns 32-digit), or is there a library (for C++) in which I can use MD5 or SHA-1 which returns a 16-digit value
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
由于您愿意接受更高的冲突率,因此您可以截断数据的 MD5 哈希值。
Since you're willing to live with the much-higher collision rate, you can just truncate the MD5 hash of the data.
查找 OpenSSL
crypto
库(免费)或 RSA BSAFE(付费)。Lookup the OpenSSL
crypto
library (free) or RSA BSAFE (paid).如果你截断加密哈希函数的大小,你就会破坏它——我的意思是你很可能会破坏使其在加密上安全的属性。如果加密属性对您来说并不重要,那么您根本不需要加密哈希 - 最好使用 校验和 或非加密哈希。
无论你在做什么,都不要使用 md5。如果您需要加密哈希函数,md5 并不是一个好的选择,因为存在会在合理时间内产生冲突的算法。如果您不需要加密哈希函数,那么 md5 就显得大材小用了。
If you truncate the size of a cryptographic hash function, you will break it - by which I mean you're very likely to damage the properties which make it cryptographically secure. If the cryptographic properties aren't important to you, then you don't need a cryptographic hash at all - you'd be better off with a checksum or non-cryptographic hash.
And whatever you're doing, don't use md5. If you need a cryptographic hash function, md5 isn't a good choice as algorithms exist that create collisions in a reasonable amount of time. If you don't need a cryptographic hash function, then md5 is overkill.