哈希摘要Hash

哈希摘要的定义、核心性质和常见算法。

#status / growing #type / concept #tech / security / crypto

摘要算法 (Hash Function)

1. 定义

摘要算法(又称哈希函数、杂凑函数、散列算法)将任意长度的输入消息映射为固定长度的输出(称为摘要、指纹或 Hash 值)。

$$ h = H(M) $$

2. 核心特性

为了用于密码学,Hash 函数必须具备以下属性:

  1. 单向性 (Pre-image Resistance):给定摘要 $h$,在计算上无法推导出原始消息 $M$。
  2. 抗弱碰撞性 (2nd Pre-image Resistance):给定消息 $M$,无法找到另一个消息 $M’$ 使得 $H(M) = H(M’)$。
  3. 抗强碰撞性 (Collision Resistance):无法找到任意两个不同的消息 $M$ 和 $M’$,使得它们的 Hash 值相同。
  4. 雪崩效应:输入消息的微小改变(如 1 bit)会导致输出摘要发生巨大变化。

说法:

  • 将任意长度的二进制明文(不定长) 映射为 较短的二进制串(定长)的算法
  • 同一明文转为的结果相同,不同明文的结果不同(理论上)。
  • hash 值称为 指纹、摘要,因为是唯一的。

关键词:

  • 哈希碰撞
  • 不可逆
  • 加盐

3. 常见算法

MD5 (Message Digest Algorithm 5)

  • 输出长度:128 bit (16 字节)。
  • 分组长度:512 bit。
  • 现状:已被证实存在碰撞漏洞,不再建议用于高安全性场景,但在完整性校验中仍常用。

SHA 系列 (Secure Hash Algorithm)

由美国 NIST 发布,安全性高于 MD5。

  • SHA-1:输出 160 bit。已被攻破,逐渐淘汰。
  • SHA-2:目前主流标准,包括 SHA-256 (256 bit) 和 SHA-512 (512 bit) 等。

4. 应用场景

  • 文件完整性校验:防止文件被篡改。
  • 口令存储:存储密码的 Hash 值而非明文。
  • digital-signature:先对消息做 Hash,再对 Hash 值签名。

补充

MD5 和 SHA1 已经被破解

个人想法

hash 算法的值被称为 指纹,是用来给文件赋予唯一性的工具。
有了这个工具反过来就能判断两个文件是否相同,即是否被修改。
但他不可逆、难破解、唯一性的特点也可以用来存储密码并验证。

相关链接

创建于 2026/1/6 更新于 2026/5/27