什么是 SHA ?
安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)指的是密码散列函数家族。
是FIPS所认证的安全散列算法。
输入不同消息,能计算出一个长度固定的字符串算法(又称消息摘要)。
且不同的数字消息,很高机率对应到不同的字符串。
SHA 家族
SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384 和 SHA-512。
由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布。
SHA-224、SHA-256、SHA-384 和 SHA-512 有时并称为 SHA-2。
SHA-1在许多安全协定中广为使用,包括TLS和SSL、PGP、SSH、S/MIME 和 IPsec,曾被视为是MD5(更早之前被广为使用的杂凑函数)的后继者。
SHA-2 是比 SHA-1 更具安全性的进阶版本。
目前大多重视安全的产品,均由 SHA-1 更换至 SHA-2 。
SHA-0 and SHA-1
最初载明的算法于1993年发布,称做安全杂凑标准(Secure Hash Standard),FIPS PUB 180。这个版本常被称为SHA-0。
它在发布之后,很快就被NSA撤回。
并由1995年发布的修订版本FIPS PUB 180-1(即SHA-1)取代。
SHA-0 和 SHA-1 的算法只在压缩函数的讯息转换部分差了一个位元的循环位移。
根据 NSA 的说法,它修正了一个在原始算法中会降低杂凑安全性的弱点。
然而 NSA 并没有提供任何进一步的解释或证明该弱点已被修正。
而后 SHA-0 和 SHA-1 相继被攻破。
SHA-1似乎是显得比SHA-0有抵抗性,这多少证实了NSA当初修正算法以增进安全性的声明。
SHA-0和SHA-1可将一个最大2的64次方位元的讯息,转换成一串160位元的讯息摘要。
其设计原理相似于MIT教授Ronald L. Rivest所设计的密码学杂凑算法MD4和MD5。
应用
消息摘要是密码学中的一个重要概念,它能够将任意长度的数据转换为固定长度的摘要值。
消息摘要算法,也被称作散列算法,是一种单向加密算法,具有不可逆性。
即无法从摘要值恢