SHA

概要

SHA 全称 Secure Hash Algorithm(安全Hash算法),是由美国NSA和NIST两个组织共同发布的一系列密码散列函数。SHA算法和MD5一样,是一种散列(Hash)算法,除了算法不一样,它返回值也长于MD5的128位二进制。

SHA 算法由较多种,主要经历了SHA-0、SHA-1、SHA-2、SHA-3这几个阶段。目前常见的SHA算法有:SHA-1、SHA-224、SHA-256、SHA-384、SHA-512,它们分别返回160、224、256、384、512位二进制。

  • SHA-0算法古老不安全几乎绝迹了。
  • SHA-2由美国国家安全局研制,算是SHA-1算法的后继者。其中,SHA-2有细分了六个不同的算法标准:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。这些算法的差异在于,生成摘要的长度、循环的次数等一些比较微小的差距,其算法的基本结构是一致的。
    • 目前一些比特币和CA证书就是使用SHA-256加密的。
  • SHA-3相对于SHA-2可以说是一种全新算法,但返回值位数和SHA-2一样,它是SHA-2的备用并不是取代,目前主流还是使用SHA-2。为了安全性,甚至可以将这两种算法一起使用。

MD5 和 SHA 对比

MD5 和 SHA1 的对比

MD5(Message Digest) SHA1(Secure Hash Algorithm)
与SHA1相比,MD5在速度上仍然更快且更可靠。 与MD5相比,SHA1的速度相对较慢。
消息摘要的长度为168位 SHA1消息散列的最大长度为160位。
与SHA1相比,MD5很简单 SHA1比MD5更复杂
攻击者需要2^128次操作才能使用MD5算法程序生成第一条消息。 攻击者需要2^160次操作
攻击者需要2^64次操作才能找出是否有两个消息共享相同的消息摘要。 攻击者需要进行2^80次操作,才能找出具有相同哈希或摘要的两条消息。
MD5提供较差或较弱的安全性 SHA1提供可容忍或平衡的安全性。

各种算法产生的摘要示例:

  • MD5: fcd34772920cf22d3e8b9a7466e33e4f
  • SHA-1: 768725e2f1576b240f82cde819ef91545af6afd1
  • SHA-256: ff5b185c2eb56587a40eb547945753ce24a165abbc6f7b2b9cc76a665b9dd984
  • SHA-384: 7e5d3277d43033d9252c932931c83c02329babac271b1e7a14e7a0bfa80e32932b6551eec56727e107f143f2d3ee507f
  • SHA-512: 54134f6390362cfd748cc28549e98aef0f3403502b0a11558dce9f80f966e862b8fc9177451baeafdaa62a847072350bb6218ef1e32fba3fa6e781d966a14ff3
算法 bit byte char
MD5 128 16 32
SHA-1 40 20 40
SHA-256 256 32 64
SHA-384 384 48 96
SHA-512 512 64 128

总结

  1. 如果是防篡改场景,建议使用 MD5,因为它计算快速,摘要长度短。
  2. 如果是防偷窥场景,必须使用 SHA-256 或更大长度的摘要算法。
  3. 为避免彩虹表攻击,必须加盐。

SHA
https://flepeng.github.io/035-密码学-03-MD5、SHA、SM3-SHA/
作者
Lepeng
发布于
2023年3月8日
许可协议