使用 OpenSSL 进行 SHA 计算
文章目录
前言
上一篇文章讲了如何使用 OpenSSL
进行 MD5
计算,今天来说一说 SHA
的使用。
SHA
SHA(Secure Hash Algorithm,安全散列算法)是一系列由美国国家安全局(NSA)设计,并由美国国家标准与技术研究院(NIST)发布的密码散列函数。SHA算法族包括了多个版本,如SHA-0、SHA-1、SHA-2和SHA-3,每个版本都有其特定的输出长度和内部结构
SHA-0
这是最初的设计,但由于被发现存在安全弱点,在实际应用中几乎未被使用。长度为160位。
SHA-1
作为SHA-0的改进版发布,曾经广泛应用于各种安全协议中。长度也是160位。
随着时间的发展,研究者发现了SHA-1的安全缺陷,特别是容易受到碰撞攻击的影响。因此,它已不再被视为安全的选择。
SHA-2
SHA-2是SHA-1的后继者,提供了更高级别的安全性。SHA-2不是一个单独的算法,而是一组算法,通常以它们的输出长度来区分,比如SHA-256、SHA-384等。
相比SHA-1,SHA-2具有更大的内部状态空间和更复杂的运算逻辑,从而提高了抵抗碰撞攻击的能力。
SHA3
SHA-3并不是SHA-2的直接升级,而是在Keccak哈希函数的基础上发展而来的新一代标准。它被选为FIPS认可的标准之一,旨在提供一个不同于SHA-2的替代方案,以防万一SHA-2出现安全漏洞。
SHA-3同样支持不同的输出长度,例如SHA3-224、SHA3-256、SHA3-384和SHA3-512。
SHA-3采用了截然不同的设计原理——海绵构造(sponge construction),这使得它在某些应用场景下可能比SHA-2更适合或更高效。
上代码
SHA1
SHA1
已经不怎么用了,直接上代码
|
|
|
|
SHA256
|
|
|
|
总结
SHA
算法的使用和 MD5
是一样的,只有名字上的区别,但是 MD5
已经被攻破了,所以不安全,实际使用尽可能使用 SHA2
算法。