gpt4 book ai didi

git - 最短哈希? MD5/安全算法。第一个字符,git

转载 作者:太空狗 更新时间:2023-10-29 13:05:41 27 4
gpt4 key购买 nike

我需要哈希函数。用户会将这些哈希写入计算机,因此哈希应该很短。我将在数据库中拥有大约 50 000 000 条记录。每个人都必须有自己的哈希。我想要独特的哈希值。但如果有一点记录具有相同的哈希值,我可以接受。独特更好。

MD2 对我来说很安全,但哈希很长:“8350e5a3e24c153df2275c9f80692773”- 32 个字符。如果你必须在键盘上写 10 个 MD2 散列,你会不高兴......

Git 对每个提交使用 SHA1(40 个字符)。但在输出中只显示前 7 个字符:

$ git log
commit e2cfc89fae5b43594b2c649fd4c05bcc6d2d12ac
...
commit 56a8b4c50d4269dc3f88727472933fd81231f63b
...
commit ce2e9ddbe896b9592abbd5fcb6604b181809d523
...
commit 498c49833516ea33b6a40697634ea6e3cfd62328
...
commit b7d78aea415e64d8d441f9747fe6d5d48fe54ee5

$ git log --oneline | head -n 5
e2cfc89 commnit message...
56a8b4c commnit message...
ce2e9dd commnit message...
498c498 commnit message...
b7d78ae commnit message...

它如何安全/独特?例如,如果我使用 MD5/SHA-1/SHA-256 中的前 5 个或 10 个字符是否足够安全?

谢谢。

最佳答案

查看 hashids ,它旨在从您的主键(或其他一些唯一数字集)生成唯一的 YouTube 风格的哈希值。它并不是 MD5 和 SHA-1 意义上的真正哈希,因为它被设计为可逆的。

例如,如果您想“散列”单个整数主键,您可能会得到如下关系

(PK: 1) <=> (hashid: 8dY0qQ)

这是从您控制的 secret 值中播种的,因此用户无法确定他们真正引用的主键。如果你的数据库涉及更多,比如有多个分片和复杂的键,你仍然没问题。 hashids 将整数列表作为输入:

(3, 171, 24) <=> (243j7Z)

作为开发人员,您有责任定义散列的最小 长度。随着您生成越来越多的哈希值,hashids 可能会生成稍长的哈希值。

对于给定的输入(初始种子、最小哈希长度和要哈希的整数列表)保证哈希是唯一的:

There are no collisions. Your generated hashes should be unique.

支持

  • JavaScript
  • ruby
  • python
  • Java
  • PHP
  • Perl
  • CoffeeScript
  • 目标-C
  • 路亚
  • Node.js
  • .NET

关于git - 最短哈希? MD5/安全算法。第一个字符,git,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21875903/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com