【问题标题】:Hash Functions which are used and more popular使用和更流行的哈希函数
【发布时间】:2015-02-19 21:47:06
【问题描述】:

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

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

【问题讨论】:

标签: security hash


【解决方案1】:
  • 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 用于文件共享上下文,但在其他地方很少使用。在文件散列上下文中没有看到太多其他散列。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      bcryptscrypt。这些用于密码哈希。

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

      【讨论】:

      • 在密码散列的上下文中,也可以使用 PBKDF2 和基于 SHA-2 的加密变体。在遗留上下文中,还有基于 MD5Crypt 和 DES 的密码。
      • bcrypt 不是哈希函数,它是密码推导算法,基于 Blowfish 密码
      • @NickolayOlshevsky - 如果你想准确地说我们应该称之为“密钥派生函数”,尽管 BCrypt 通常被称为密码的哈希函数。通常你必须解释密码应该是散列而不是加密,所以如果你说它不是散列函数只会让人们更加困惑。
      【解决方案4】:
      • 如果您只想在您的工具中添加哈希函数,而不考虑安全性,那么可以实现 MD-4 和 NIST SHA-1 和 SHA-2 竞赛决赛入围者。
      • 对于更新和更安全的哈希函数,可以实现 SHA-3 获胜者 (Keccak)。

      NIST hash function competition

      SHA-3

      【讨论】:

      • 你知道SHA-3的任何软件实现吗?
      • @ehsun7b 尚无 SHA-3 的最终规范。 NIST 可能会在称其为 SHA3 之前对 Keccak 进行一些小的调整。所以我会等到正式指定后再实施。
      【解决方案5】:

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

      目前最好的是:

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

      请参阅https://code.google.com/p/smhasher/w/list 了解一些流行的测试框架。

      [编辑注释:prev.有 bcrypt,scrypt 作为安全+慢散列函数,但它们只是密码散列函数]

      【讨论】:

      • Bcrypt 和 scrypt 是密码散列,它们不像加密散列那样安全,而且它们故意变慢。另一方面,SHA-2 和 BLAKE2 是安全的加密哈希,后者稍快一些。将它们列在同一个列表中没有任何意义。
      • 你是对的。改进它。这个问题太宽泛了。
      【解决方案6】:

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

      【讨论】:

      • DES 和 3DES 都不支持使用公钥/私钥加密数据。它们是对称算法。
      • 另外,DES 和 TDES 不是散列函数。
      • 三重 DES 使用“密钥包”,其中包含三个 DES 密钥,K1、K2 和 K3,每个 56 位(不包括奇偶校验位)
      • 我的问题是关于哈希函数而不是公钥加密算法。
      猜你喜欢
      • 2023-03-31
      • 2012-11-29
      • 2012-05-09
      • 2017-01-22
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多