跳到主要内容
ecdsa.com

SHA-256

SHA-2 家族(FIPS 180-4)中输出 256 位的成员,是 TLS、JWT、X.509、比特币以及大多数文件完整性工具的默认哈希,抗碰撞强度为 128 位,抗原像强度为 256 位。
其他写法SHA256SHA2-256sha256sum

SHA-256 采用 Merkle–Damgård 结构,以 32 位字为单位对每个 64 字节的分组做 64 轮运算,输出 32 字节。空字符串的摘要为 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,abc 的摘要为 ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad。目前没有任何攻击能接近它的安全界限。

大多数现代 CPU 都有 SHA-256 指令(Intel 和 AMD 的 SHA 扩展、ARMv8 密码扩展)。在 Apple M4 Max 的单个核心上,使用 16 KiB 缓冲区时,OpenSSL 3.6.5 的哈希速度约为 2.85 GB/s,比同一台机器上的 SHA-512(1.65 GB/s)和 SHA3-256(1.01 GB/s)更快。比特币对区块 ID 和交易 ID 连续应用两次 SHA-256(SHA-256d)。

它的 Merkle–Damgård 结构允许长度扩展,因此 SHA-256(secret ‖ message) 不是安全的 MAC;应使用 HMAC-SHA256。标识符:OID 2.16.840.1.101.3.4.2.1;JOSE 体系中,PKCE 使用 S256,SD-JWT 的 _sd_alg 使用 sha-256;WebCrypto 中为 SHA-256,OpenSSL 和 Node 中为 sha256。

标准与参考资料

全部术语