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

MD5消息摘要算法的实现 更多...

MD5 的协作图:

struct  MD5
 MD5哈希算法结构体 更多...

函数

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

详细描述

MD5消息摘要算法的实现

警告
**安全警告**:MD5算法已被证明存在密码学弱点,不再适合用于安全敏感场景。 具体漏洞包括:
  • 碰撞攻击(2004年,王小云等)
  • 前缀碰撞攻击(2008年,Sotirov等)
  • 选择前缀碰撞攻击(2009年,Stevens等)
对于密码存储、数字签名、证书验证等场景,请使用 SHA-256 或 SHA-3 系列算法。

遵循的国际标准

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

MD5 算法规范:

相关历史标准(信息参考):

实现细节

特性 规范参数
算法 MD5 消息摘要
输出长度 128 位(16 字节)
内部状态 4 个 32 位字(A, B, C, D)
分组大小 512 位(64 字节)
轮数 4 轮 × 16 步 = 64 步
初始向量 (IV) RFC 1321 §3.3 定义
填充方案 Merkle–Damgård 强化(RFC 1321 §3.1)
小端字节序 是(RFC 1321 §3.4)

适用场景

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

  • 文件完整性校验
  • 数据去重与内容寻址
  • 非安全相关的哈希表实现
  • 与历史系统兼容的数据交换
参见
https://www.rfc-editor.org/rfc/rfc1321
https://csrc.nist.gov/projects/hash-functions
警告
**禁止使用**:密码存储、数字签名、SSL/TLS 证书、代码签名、认证令牌等安全场景。

函数说明

◆ md5() [1/4]

NEFORCE_ALWAYS_INLINE_INLINE byte_vector md5 ( const byte_vector & data)

MD5哈希便捷函数(字节向量版本)

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

在文件 md5.hpp121 行定义.

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

◆ md5() [2/4]

NEFORCE_ALWAYS_INLINE_INLINE byte_vector md5 ( const cbyte_view data)

MD5哈希便捷函数(字节视图版本)

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

在文件 md5.hpp114 行定义.

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

◆ md5() [3/4]

NEFORCE_ALWAYS_INLINE_INLINE string md5 ( const string & data)

MD5哈希便捷函数(字符串版本)

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

在文件 md5.hpp105 行定义.

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

◆ md5() [4/4]

NEFORCE_ALWAYS_INLINE_INLINE string md5 ( const string_view data)

MD5哈希便捷函数(字符串视图版本)

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

在文件 md5.hpp96 行定义.

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