3

我知道所有哈希函数的列表太长了。我只想知道在日常 IT 实际任务中使用的最流行的那些。我知道 MD5、SHA1、SHA2(256 和 512)非常受欢迎。我可以在这 5 种算法中添加任何其他哈希函数吗?

我想开发一个哈希工具,我只想包含开发人员真正需要的那些算法。

4

6 回答 6

6
  • MD5、SHA-1 - 常用,曾经是安全的,但不再抗碰撞
  • SHA-2 - 常用,安全。这是一系列具有不同输出大小的函数。
  • SHA-3 - 尚未指定,但之后可能会流行。等待规范。将是一个函数族。
  • CRC32 - 不安全,但作为校验和非常常见
  • MD4、RIPEMD160 - 还没有看到用于散列文件的那些,但它们仍然存在于其他一些上下文中。MD4 坏了,RIPEMD 家族的一些老成员坏了,但 RIPEMD160 仍然是安全的。我见过漩涡的唯一地方是 TrueCrypt 的 KDF。
  • TTH / TigerTreeHash - 在某些文件共享环境中使用,仍然安全,但安全边际越来越薄
  • ED2K - 在某些文件共享环境中使用,基于 MD4,抗碰撞性损坏
  • Skein, Blake2 - Skein 是 SHA-3 入围者,Blake2 是从其中之一派生的。在软件中相对较快,偶尔使用但并不常见。作为 Blake2 的贡献者,我希望它变得更受欢迎:)

除了您命名为 CRC32 的哈希值之外,它确实很常见,并且 TTH/ED2K 用于文件共享上下文,但在其他地方很少使用。在文件散列上下文中没有看到太多其他散列。

于 2013-05-06T08:39:50.073 回答
4

最广泛使用(并在 SSL/TLS、OpenPGP、SSH 标准中定义)是:

  • CRC32 - 简单校验和,用于 ZIP、OpenPGP 和许多其他标准。
  • MD2、MD5 - 太旧且弱 MD5 - 旧且被认为弱。
  • SHA1 - 事实上的标准,几乎无处不在(DSA 算法仅与 SHA1 一起使用,这也是广泛的使用领域)。
  • SHA224/256/384/512 - 应取代 SHA1,并与大于 1024 位的 DSA 密钥和 ECDSA 签名一起使用
  • RipeMD160 - 用于 OpenPGP 和一些 X.509 证书。

还有其他哈希算法(您可以在 wikipedia 上获得完整列表),但很可能您在现实生活中永远不会遇到它们。

于 2013-05-06T10:26:14.943 回答
2

bcryptscrypt。这些用于密码散列。

bcrypt已经存在了很长时间,并且被认为是安全的。scrypt是一个较新的,它应用了一些内存密集型操作来防止 GPU 的暴力攻击。

于 2013-05-06T07:19:41.613 回答
0
  • 如果您只想在您的工具中添加哈希函数,而不考虑安全性,那么可以实现 MD-4 和 NIST SHA-1 和 SHA-2 竞赛决赛选手。
  • 对于更新和更安全的哈希函数,可以实现 SHA-3 获胜者(Keccak)。

NIST 哈希函数竞赛

SHA-3

于 2013-05-06T07:11:59.137 回答
0

首先,您需要决定是想要快速、不安全的散列函数还是慢速、安全的散列函数。

目前最好的是:

  • 快速:SSE4.2/armv7 HW、Murmur3、CityHash、FNV 上的 CRC32
  • 安全:SHA-3 (Keccak)、SHA-2、BLAKE2

有关一些流行的测试框架,请参阅https://code.google.com/p/smhasher/w/list

[编辑说明:上一页。有 bcrypt,scrypt 作为安全+慢散列函数,但它们只是密码散列函数]

于 2014-03-22T22:19:05.997 回答
-2

我建议您学习 DES 和 TDES,它们使用密钥进行加密,如果您需要使用公钥/私钥加密/解密数据,它们将是您的不错选择。

于 2013-05-06T07:07:08.390 回答