具有最小冲突的短 Python 字母数字哈希

新手上路,请多包涵

我想使用某种哈希函数为表设置非整数主键。 md5() 似乎有点长(32 个字符)。

有哪些替代哈希函数可能使用字母表中的每个字母以及字符串长度可能较短且冲突率较低的整数?

谢谢!

原文由 ensnare 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 435
1 个回答

为什么不截断 SHA1 或 MD5?如果你不截断,那么你会有更多的碰撞,但它仍然比设计你自己的要好。请注意,您可以对截断的哈希进行 base64 编码,而不是使用十六进制。例如

import base64
import hashlib
hasher = hashlib.sha1("The quick brown fox")
base64.urlsafe_b64encode(hasher.digest()[:10])

只要您了解权衡,您可以尽可能少地截断(包括根本不截断)或尽可能多。

EDIT: Since you mentioned URL-safe, you can use urlsafe_b64encode and urlsafe_b64decode , which uses - and _ rather than + and / .

原文由 Matthew Flaschen 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题