我想使用某种哈希函数为表设置非整数主键。 md5() 似乎有点长(32 个字符)。
有哪些替代哈希函数可能使用字母表中的每个字母以及字符串长度可能较短且冲突率较低的整数?
谢谢!
原文由 ensnare 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想使用某种哈希函数为表设置非整数主键。 md5() 似乎有点长(32 个字符)。
有哪些替代哈希函数可能使用字母表中的每个字母以及字符串长度可能较短且冲突率较低的整数?
谢谢!
原文由 ensnare 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答859 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
为什么不截断 SHA1 或 MD5?如果你不截断,那么你会有更多的碰撞,但它仍然比设计你自己的要好。请注意,您可以对截断的哈希进行 base64 编码,而不是使用十六进制。例如
只要您了解权衡,您可以尽可能少地截断(包括根本不截断)或尽可能多。
EDIT: Since you mentioned URL-safe, you can use urlsafe_b64encode and urlsafe_b64decode , which uses
-
and_
rather than+
and/
.