Back to Learn
Development2026年6月11日

MD5 与 SHA-256:应该使用哪种哈希算法以及何时使用

哈希生成器指南:MD5、SHA-256、SHA-512 详解。在浏览器中私密生成加密哈希值——无需上传,使用 Web Crypto API,即时出结果。

L
LokalTools Team
Author
MD5 与 SHA-256:应该使用哪种哈希算法以及何时使用

MD5 与 SHA-256:应该使用哪种哈希算法以及何时使用

LokalTools 哈希生成器 直接在您的浏览器中使用原生 Web Crypto API 计算 MD5、SHA-1、SHA-256 和 SHA-512 哈希值——没有任何文本或文件被发送到任何服务器。输入字符串或拖入文件,即可立即获得用于文件完整性验证、调试 HMAC 签名或学习哈希原理的加密哈希值。

哈希是软件中几乎所有功能的基础:下载验证、密码存储、API 请求签名、缓存失效。但选错算法会引入安全漏洞——MD5 已不适用于安全场景,但对非加密校验和仍然有效。SHA-256 是现代标准。下面介绍如何判断您的场景需要哪一个。

为什么绝对不应在云端工具中对敏感数据进行哈希处理

任何将输入发送到服务器的在线哈希工具都可以记录您的数据。如果您正在对密码、API 密钥或专有文档进行哈希处理,使用服务端工具会暴露这些数据。LokalTools 哈希生成器 使用 window.crypto.subtle——这是浏览器内置的加密 API。计算在您的 JavaScript 沙盒中本地运行,没有任何内容被传输出去。

加密哈希的工作原理

哈希函数接受任意长度的输入,生成固定长度的指纹,称为摘要(digest)。三个特性使哈希在安全场景中大有用处:

  • 确定性:相同的输入始终产生相同的输出
  • 单向性:仅凭摘要无法在计算上还原原始输入
  • 雪崩效应:输入中改变一位,会导致输出中约一半的位发生变化

这些特性使哈希可以验证文件是否被修改,而无需比较整个文件。

MD5、SHA-1、SHA-256、SHA-512:何时使用各算法

MD5 — 128位摘要(32个十六进制字符)

适用场景:检测意外文件损坏的非安全校验和、旧式缓存键、与需要 MD5 的老旧系统的兼容性。

避免用于:任何与安全相关的场景。MD5 存在已知的碰撞漏洞——两个不同的输入可以产生相同的哈希值。使用 GPU 的破解工具每秒可以测试数十亿个 MD5 哈希值,对常见密码的暴力破解轻而易举。

SHA-1 — 160位摘要(40个十六进制字符)

适用场景:读取 Git 提交 ID(Git 内部仍使用 SHA-1)、部分遗留证书链。

避免用于:任何新的加密实现。SHA-1 已在密码学上被攻破——2017年的 SHAttered 攻击公开演示了实际的碰撞。

SHA-256 — 256位摘要(64个十六进制字符)

适用场景:文件完整性验证、HMAC-SHA256 请求签名(AWS、Stripe、GitHub Webhook 的标准)、TLS 证书、Docker 镜像摘要、区块链交易 ID,以及结合适当密钥派生函数(KDF)的通用密码哈希。

避免用于:不使用 KDF 直接存储密码。单独的 SHA-256 速度过快——使用 bcrypt、scrypt 或 Argon2 处理密码。

SHA-512 — 512位摘要(128个十六进制字符)

适用场景:需要额外暴力破解安全余量的场景,或在 64 位硬件上对大型数据进行哈希时(SHA-512 因内部字宽更大而可能更快)。

说明:对于大多数使用场景,SHA-512 并不比 SHA-256 更安全。SHA-256 是标准推荐,除非有特定原因需要更宽的摘要。

操作步骤:使用 LokalTools 生成哈希值

  1. 打开 LokalTools 哈希生成器
  2. 在输入框中输入或粘贴文本——哈希值会随您的输入实时更新
  3. 要对文件进行哈希处理,点击哈希文件并选择文件(ZIP、PDF、可执行文件、图片等)
  4. 从下拉菜单选择算法:MD5、SHA-1、SHA-256 或 SHA-512
  5. 点击复制将十六进制摘要复制到剪贴板
  6. 与文件作者发布的已知校验和进行对比,验证文件完整性

哈希生成的常见使用场景

验证已下载文件:软件发布者通常会在下载旁边发布 SHA-256 校验和。在本地对文件进行哈希处理并进行比较——不匹配意味着下载内容已损坏或被篡改。

调试 Webhook 签名:GitHub、Stripe 等服务使用 HMAC-SHA256 对 Webhook 负载进行签名。粘贴您的负载和密钥,验证您计算的签名是否与请求头中的签名匹配。

生成内容寻址键:内容分发系统和缓存通常按内容的哈希值作为键。对内容进行哈希处理可产生确定性的、抗碰撞的标识符。

常见问题

MD5 用于密码是否安全?

不安全。MD5 速度过快且存在已知碰撞漏洞。现代 GPU 每秒可以测试数十亿个 MD5 哈希值,对常见密码的暴力破解轻而易举。请使用 bcrypt、scrypt 或 Argon2——这些专为密码哈希设计的算法会故意放慢速度,并为每个密码包含随机盐值。

MD5 和 SHA-256 有什么区别?

MD5 生成 128 位摘要(32 个十六进制字符);SHA-256 生成 256 位摘要(64 个十六进制字符)。更关键的是,MD5 存在已知的碰撞漏洞,使其不适合任何安全场景。SHA-256 目前被认为在密码学上是安全的,是完整性验证和 HMAC 签名的标准选择。

可以用 SHA-256 验证下载文件的完整性吗?

可以——这是 SHA-256 最主要的用途之一。下载文件后,打开 LokalTools 哈希生成器,将文件拖入,选择 SHA-256,然后将摘要与作者发布的校验和进行比较。不匹配意味着文件在传输过程中或在源头被修改了。

哈希生成器会将我的数据发送到服务器吗?

不会。LokalTools 哈希生成器使用 window.crypto.subtle,即浏览器内置的加密 API。所有计算都在您的浏览器本地进行——没有任何数据被传输。这一点在对包含 API 密钥、密码或专有内容的字符串进行哈希处理时尤为重要。

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

碰撞是指两个不同的输入产生相同的哈希输出。MD5 和 SHA-1 都有已被证明的实际碰撞案例。如果攻击者能够伪造一个与合法文件哈希值相同的恶意文件,他们就可以替换原始文件,而哈希值看起来仍然匹配,从而完全破坏完整性验证。

哈希与加密有什么区别?

加密是可逆的——给定密钥,您可以恢复原始数据。哈希是单向的——摘要无法被逆向还原为输入。哈希用于指纹识别和验证,加密用于保密性。永远不要用哈希保护您需要恢复的数据,也不要在不验证密钥的情况下用加密来验证完整性。

无论是验证发布构件、调试已签名的 API 请求,还是了解加密哈希的工作原理,LokalTools 哈希生成器 都能为您提供快速、私密、纯浏览器内的结果——无需账号、无需上传、无日志记录。

Want to see more tools?

Explore our collection of fast, private, and free browser-based utilities.

Browse All Tools