什么是 哈希?

哈希是一种单向数学函数,将任意大小的输入数据转换为固定长度的数字指纹,具有确定性、雪崩效应和抗碰撞性等特性。常用算法包括 SHA-256 和 SHA-3,广泛应用于密码存储、数据完整性验证、数字签名和区块链技术,是现代信息安全的基础组件。

快速了解

全称哈希函数/散列
创建时间1979 年(Ralph Merkle 的博士论文)
规范文档官方规范

工作原理

哈希函数接收输入(或称「消息」)并返回固定大小的字节串,通常以十六进制数显示。输出称为哈希值、哈希码、摘要或简称哈希。哈希函数被设计为单向函数,这意味着从哈希输出重构输入在计算上是不可行的。加密哈希函数的关键特性包括:确定性(相同输入总是产生相同输出)、快速计算、抗原像攻击(无法从输出找到输入)、微小输入变化产生完全不同的输出(雪崩效应)以及抗碰撞性(难以找到两个不同输入具有相同哈希)。常见的哈希算法包括 MD5(现已被认为不安全)、SHA-1(已弃用于安全用途)、SHA-256(广泛使用)和 SHA-3。哈希是数据完整性验证、密码存储、数字签名和区块链技术的基础。

主要特点

  • 无论输入大小如何都产生固定长度输出
  • 单向函数 - 无法逆向找到原始输入
  • 确定性 - 相同输入始终产生相同哈希
  • 雪崩效应 - 微小输入变化产生完全不同的哈希
  • 抗碰撞性 - 极难找到两个具有相同哈希的输入
  • 对任何给定输入计算速度快

常见用途

  1. 密码存储和验证(配合加盐)
  2. 数据完整性验证(文件校验和)
  3. 数字签名和证书
  4. 区块链和加密货币挖矿
  5. 编程中的哈希表和数据结构

示例

loading...
Loading code...

常见问题

哈希和加密有什么区别?

哈希是一种单向函数,将数据转换为无法逆向还原的固定大小输出;而加密是一种双向过程,可以使用正确的密钥进行解密。哈希用于数据完整性验证和密码存储,而加密用于在传输或存储过程中保护数据机密性。

为什么 MD5 和 SHA-1 被认为是不安全的?

MD5 和 SHA-1 被认为不安全,因为研究人员已经证明了针对它们的实际碰撞攻击,这意味着两个不同的输入可以产生相同的哈希输出。在现代硬件上,MD5 碰撞可以在几秒内生成,而 SHA-1 在 2017 年被 Google 的 SHAttered 攻击破解。对于安全应用,应该使用 SHA-256 或 SHA-3。

什么是哈希碰撞,为什么它很重要?

哈希碰撞发生在两个不同的输入产生相同的哈希输出时。虽然对于任何哈希函数来说,碰撞在理论上都是可能的(因为无限的输入映射到有限的输出),但加密哈希函数被设计为使找到碰撞在计算上不可行。碰撞之所以重要,是因为它们可能被利用来伪造数字签名或绕过完整性检查。

什么是加盐,为什么它对密码哈希很重要?

加盐是在哈希之前向每个密码添加唯一随机值的做法。这可以防止攻击者使用预计算的彩虹表,并确保相同的密码产生不同的哈希值。如果没有加盐,获得密码哈希数据库的攻击者可以通过与已知哈希值进行比较轻松破解常见密码。

我应该为我的应用程序使用哪种哈希算法?

对于密码存储,请使用专门的算法,如 bcrypt、scrypt 或 Argon2,它们包含内置加盐并且故意设计得较慢。对于数据完整性和通用哈希,SHA-256 被广泛推荐。对于需要最新安全性的加密应用,SHA-3(Keccak)提供了另一种设计选择。避免将 MD5 和 SHA-1 用于任何安全敏感的应用程序。

相关工具

相关术语

相关文章

哈希算法详解【2026】- 从MD5到SHA-256全解析

深入解析现代网络密码学中哈希算法(Hashing Algorithms)的底层数学核心原理、安全特征及其在实际工程中的广泛应用场景。全面硬核对比经典 MD5、SHA-1 的漏洞与淘汰原因,深入学习安全的 SHA-256/SHA-3 标准,以及专门针对用户密码安全存储设计的 Bcrypt、Argon2、Scrypt 慢速哈希算法的区别与最佳业务选型指南。

2024-01-25

MD5哈希详解【2026】- 原理、用途与安全性全解析

深入透彻了解经典 MD5(Message-Digest Algorithm 5) 密码哈希算法的底层散列数学原理、经典文件校验应用场景与其在现代网络安全环境中的严重致命局限性。深度硬核剖析如何进行大文件完整性校验防篡改、MD5 哈希碰撞(Collision)攻击与彩虹表破解原理,并为您强烈推荐 Bcrypt、Argon2、SHA-256 等符合现代标准的更安全替代方案。附前后端完整代码实现示例!

2024-07-27

Bcrypt密码哈希算法详解【2026】- 安全原理、成本因子与最佳实践

深入硬核理解业界标准 Bcrypt 密码哈希算法的底层数学加密原理与安全机制。详细解析如何安全生成随机盐值(Salt)、根据摩尔定律动态调优成本因子(Cost Factor),以及 Bcrypt 完整输出哈希字符串的数据结构解析。横向深度对比 Bcrypt 与最新 Argon2、Scrypt 算法的性能优劣。本文包含 Node.js、Python、Java 多语言的完整实战代码示例!

2026-02-22