输入要加密的数据
加密后的字符串

...

概述

SHA(Secure Hash Algorithm)是一组密码学哈希函数,用于将任意长度的数据转换成固定长度的哈希值。SHA算法广泛用于数据完整性验证、数字签名、密码学安全等领域。

SHA家族包括多个版本,其中较常见的有SHA-1、SHA-256、SHA-384和SHA-512等。

安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是 FIPS 所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的几率很高。

  • 哈希函数特性: SHA是一种单向散列函数,即对于给定的输入,可以迅速生成一个哈希值,但从哈希值反推出原始输入几乎是不可能的。这种性质对于密码学应用至关重要,因为它确保了哈希值的不可逆性。

  • SHA-1: SHA-1是最早的SHA版本,产生160位(20字节)的哈希值。然而,由于存在安全漏洞,SHA-1已经被认为是不安全的,不再推荐使用。

  • SHA-256、SHA-384、SHA-512: 这些版本产生更长的哈希值,分别是256位、384位和512位。这些版本提供更高的安全性,适用于不同的安全需求。例如,SHA-256通常用于数字签名和数据完整性验证。

  • 安全性: SHA算法的安全性建立在哈希碰撞的难解性基础上。哈希碰撞是指两个不同的输入产生相同的哈希值。在密码学中,算法被认为是安全的,如果找到碰撞的难度很大,使攻击者几乎不可能通过已知的方法找到两个不同的输入得到相同的哈希值。

  • 应用领域: SHA算法广泛应用于数字签名、证书生成、密码存储、数据完整性验证等领域。例如,在数字证书中,使用SHA算法生成证书的摘要,以确保证书的完整性和合法性。

SHA 家族的算法,由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布,是美国的政府标准,其分别是:

  • SHA
      -0:1993年发布,当时称做安全散列标准(Secure Hash Standard),发布之后很快就被NSA撤回,是SHA-1的前身。
    • SHA-1:1995 年发布,SHA-1 在许多安全协议中广为使用,包括TLS、GnuPG、SSH、S/MIME和IPsec,是MD5的后继者。但SHA-1的安全性在2010年以后已经不被大多数的加密场景所接受。2017年荷兰密码学研究小组CWI和Google正式宣布攻破了SHA-1。
    • SHA-2:2001年发布,包括 SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。SHA-2 目前没有出现明显的弱点。虽然至今尚未出现对 SHA-2 有效的攻击,但它的算法跟 SHA-1 基本上仍然相似。
    • SHA-3:2015 年正式发布,由于对 MD5 出现成功的破解,以及对 SHA-0 和 SHA-1 出现理论上破解的方法,NIST 感觉需要一个与之前算法不同的,可替换的加密散列算法,也就是现在的 SHA-3。

    SHA 函数对比

    下表中的中继散列值(internal state)表示对每个资料区块压缩散列过后的中继值(internal hash sum)。