NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
SHA-256

SHA-256安全哈希算法实现。 更多...

SHA-256 的协作图:

struct  SHA256
 SHA-256哈希算法结构体 更多...

函数

NEFORCE_ALWAYS_INLINE_INLINE string sha256 (const string_view data)
 SHA-256哈希便捷函数(字符串视图版本)
NEFORCE_ALWAYS_INLINE_INLINE string sha256 (const string &data)
 SHA-256哈希便捷函数(字符串版本)
NEFORCE_ALWAYS_INLINE_INLINE byte_vector sha256 (const cbyte_view data)
 SHA-256哈希便捷函数(字节视图版本)
NEFORCE_ALWAYS_INLINE_INLINE byte_vector sha256 (const byte_vector &data)
 SHA-256哈希便捷函数(字节向量版本)

详细描述

SHA-256安全哈希算法实现。

遵循的国际标准

本实现严格遵循以下标准规范:

SHA-2 算法规范:

相关国际标准:

密码模块验证标准:

实现细节

特性 规范参数
算法 SHA-256(SHA-2 家族成员)
输出长度 256 位(32 字节)
内部状态 8 个 32 位字(h0-h7)
分组大小 512 位(64 字节)
轮数 64 轮
最大输入长度 2^64 - 1 位
初始向量 (IV) FIPS 180-4 §5.3.3 定义
填充方案 Merkle–Damgård 强化(FIPS 180-4 §5.1.1)
字节序 大端(FIPS 180-4 §3.2.2)
安全强度 碰撞抗性 128 位,原像抗性 256 位

SHA-2 家族对比

算法 输出长度 内部状态字 轮数 安全强度(碰撞)
SHA-224 224 位 8 × 32 位 64 112 位
SHA-256 256 位 8 × 32 位 64 128 位
SHA-384 384 位 8 × 64 位 80 192 位
SHA-512 512 位 8 × 64 位 80 256 位
SHA-512/256 256 位 8 × 64 位 80 128 位

适用场景

SHA-256 是目前广泛推荐的安全哈希算法,适用于:

  • 密码存储(配合盐值和密钥派生函数)
  • 数字签名(RSA、ECDSA、EdDSA)
  • 证书验证(X.509 证书链)
  • 区块链技术(比特币、以太坊的 PoW 和工作量证明)
  • 数据完整性校验(HMAC-SHA256)
  • 密钥派生函数(HKDF、PBKDF2)
  • 确定性随机数生成器(DRBG)
参见
https://csrc.nist.gov/projects/hash-functions
https://www.rfc-editor.org/rfc/rfc6234
https://csrc.nist.gov/projects/cryptographic-module-validation-program

函数说明

◆ sha256() [1/4]

NEFORCE_ALWAYS_INLINE_INLINE byte_vector sha256 ( const byte_vector & data)

SHA-256哈希便捷函数(字节向量版本)

参数
data输入数据
返回
32字节的哈希值

在文件 sha256.hpp136 行定义.

引用了 data() , 以及 SHA256::hash().

◆ sha256() [2/4]

NEFORCE_ALWAYS_INLINE_INLINE byte_vector sha256 ( const cbyte_view data)

SHA-256哈希便捷函数(字节视图版本)

参数
data输入数据
返回
32字节的哈希值

在文件 sha256.hpp129 行定义.

引用了 data() , 以及 SHA256::hash().

◆ sha256() [3/4]

NEFORCE_ALWAYS_INLINE_INLINE string sha256 ( const string & data)

SHA-256哈希便捷函数(字符串版本)

参数
data输入字符串
返回
64字符的十六进制哈希值

在文件 sha256.hpp120 行定义.

引用了 data() , 以及 SHA256::hash_hex().

◆ sha256() [4/4]

NEFORCE_ALWAYS_INLINE_INLINE string sha256 ( const string_view data)

SHA-256哈希便捷函数(字符串视图版本)

参数
data输入字符串
返回
64字符的十六进制哈希值

在文件 sha256.hpp111 行定义.

引用了 data() , 以及 SHA256::hash_hex().