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

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

SHA-1 的协作图:

struct  SHA1
 SHA-1哈希算法结构体 更多...

函数

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

详细描述

SHA-1安全哈希算法实现

警告
**安全警告**:SHA-1算法已被证明存在密码学弱点,不再适合用于安全敏感场景。 具体漏洞包括:
  • 理论攻击(2005年,王小云等,复杂度 2^69)
  • 碰撞攻击(2017年,Google 与 CWI,SHAttered 攻击)
  • 选择前缀碰撞攻击(2020年,Gaëtan Leurent 与 Thomas Peyrin,复杂度 2^63.4)
对于密码存储、数字签名、证书验证等场景,请使用 SHA-256 或 SHA-3 系列算法。

遵循的国际标准

本实现严格遵循以下标准规范(用于兼容性目的):

SHA-1 算法规范:

相关国际标准(信息参考):

废弃与迁移指南:

实现细节

特性 规范参数
算法 SHA-1 安全哈希算法
输出长度 160 位(20 字节)
内部状态 5 个 32 位字(h0, h1, h2, h3, h4)
分组大小 512 位(64 字节)
轮数 4 轮 × 20 步 = 80 步
最大输入长度 2^61 - 1 字节
初始向量 (IV) FIPS 180-4 §6.1.1 定义
填充方案 Merkle–Damgård 强化(FIPS 180-4 §5.1.1)
字节序 大端(FIPS 180-4 §3.2.2)

适用场景

尽管存在安全弱点,SHA-1 仍可用于以下非安全场景:

  • Git 版本控制系统中的对象标识(正在迁移到 SHA-256)
  • 历史数据完整性验证(非对抗性环境)
  • 与历史系统兼容的数据交换
  • 非安全相关的校验和计算
参见
https://csrc.nist.gov/projects/hash-functions
https://shattered.io/ (SHAttered 碰撞攻击演示)
警告
**禁止使用**:数字签名、SSL/TLS 证书、代码签名、认证令牌等安全场景。 根据 NIST SP 800-131A Rev. 2,SHA-1 已于 2013 年后禁止用于数字签名生成。

函数说明

◆ sha1() [1/4]

NEFORCE_ALWAYS_INLINE_INLINE byte_vector sha1 ( const byte_vector & data)

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

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

在文件 sha1.hpp133 行定义.

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

◆ sha1() [2/4]

NEFORCE_ALWAYS_INLINE_INLINE byte_vector sha1 ( const cbyte_view data)

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

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

在文件 sha1.hpp126 行定义.

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

◆ sha1() [3/4]

NEFORCE_ALWAYS_INLINE_INLINE string sha1 ( const string & data)

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

参数
data输入字符串
返回
20字节的哈希值(原始字节)

在文件 sha1.hpp119 行定义.

引用了 data() , 以及 sha1().

◆ sha1() [4/4]

NEFORCE_ALWAYS_INLINE_INLINE string sha1 ( const string_view data)

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

参数
data输入字符串
返回
20字节的哈希值(原始字节)
注解
返回原始字节数据而非十六进制字符串

在文件 sha1.hpp109 行定义.

引用了 data(), vector< T, Alloc >::data(), SHA1::hash() , 以及 vector< T, Alloc >::size().

被这些函数引用 sha1().