Make Tools
2026-04-11

哈希生成器指南:MD5、SHA-256 及更多

了解哈希函数的工作原理,何时使用 MD5 与 SHA-256,以及如何为密码、文件完整性等生成哈希值。

哈希安全开发工具

什么是哈希,为什么要关心它?

哈希函数将任意输入——文件、密码、消息——转换为固定长度的字符串。这个输出称为哈希值、摘要或指纹。关键特性:即使输入发生微小变化,哈希值也会完全不同。这使得哈希在数据完整性验证、密码存储和数字签名中不可或缺。

无论你是在验证下载的文件、安全存储密码,还是构建区块链,哈希函数无处不在。我们的 哈希生成器 让你直接在浏览器中生成哈希值。

主流哈希算法详解

MD5

MD5 生成 128 位哈希值,通常显示为 32 个十六进制字符。它曾是校验和的首选,但现在被认为密码学上已不安全——碰撞攻击是可行的。MD5 仍在非安全场景中使用,如文件去重和 ETag。

# 命令行生成 MD5 哈希
echo -n "Hello World" | md5sum
# 输出: b10a8db164e0754105b7a99be72e3fe5

SHA-1

SHA-1 生成 160 位哈希值。与 MD5 类似,它易受碰撞攻击——Google 在 2017 年展示了实际碰撞。Git 仍使用 SHA-1 作为提交标识符,但正在迁移到更安全的替代方案。

SHA-256

SHA-256 是 SHA-2 家族的一员,生成 256 位哈希值。它是当前大多数安全应用的标准:TLS 证书、比特币挖矿、代码签名和数字文档。截至 2026 年,SHA-256 尚无实际攻击手段。

// JavaScript: 使用 Web Crypto API 生成 SHA-256
async function sha256(message) {
  const msgBuffer = new TextEncoder().encode(message);
  const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
  const hashArray = Array.from(new Uint8Array(hashBuffer));
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
}

sha256('Hello World').then(console.log);
// 输出: a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e

SHA-512

SHA-512 使用更大的内部状态,生成 512 位哈希值。在 64 位处理器上比 SHA-256 更快,常用于密码哈希方案(如 crypt())。对于大多数应用,SHA-256 提供了足够的安全性且输出更小。

密码存储中的哈希

永远不要以明文存储密码。哈希是第一道防线,但单纯的哈希不够——攻击者使用彩虹表来反转常见哈希。现代密码存储使用:

  • 加盐哈希:在哈希之前添加随机盐值,防止彩虹表攻击。
  • Bcrypt、Argon2、scrypt:专为密码设计的算法,故意设置为低速,使暴力破解变得不切实际。
# Python: 使用 bcrypt 哈希密码
import bcrypt

password = "my_secure_password"
salt = bcrypt.gensalt()
hashed = bcrypt.hashpw(password.encode(), salt)
print(hashed)
# 输出: $2b$12$... (60 字符哈希)

验证文件完整性

下载软件时,发布者通常会提供哈希值。将下载文件的哈希值与发布的值进行比较——如果匹配,说明文件未被篡改或损坏。

# 验证文件的 SHA-256 哈希
sha256sum downloaded-file.zip
# 将输出与发布者提供的校验和对比

我们的 哈希生成器 支持从文本输入和上传文件生成哈希值。

HMAC:基于密钥的消息认证

HMAC(基于哈希的消息认证码)将哈希函数与密钥结合。它同时验证数据完整性和认证——证明发送者拥有共享密钥。

// Node.js 中的 HMAC-SHA256
const crypto = require('crypto');
const hmac = crypto.createHmac('sha256', 'secret-key');
hmac.update('Hello World');
console.log(hmac.digest('hex'));

Web 开发中的哈希

哈希在 Web 应用中随处可见:

  • 缓存破坏:在文件名后附加内容哈希,确保浏览器获取更新后的资源。
  • 内容寻址:IPFS 和 Git 使用哈希作为内容标识符。
  • 完整性属性:子资源完整性(SRI)使用哈希验证 CDN 提供的脚本。
<script src="https://cdn.example.com/lib.js"
        integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"
        crossorigin="anonymous"></script>

选择合适的算法

  • 通用校验和:SHA-256——快速、广泛支持、对大多数场景足够安全。
  • 密码存储:Argon2id 或 bcrypt——设计为低速,抵抗 GPU 攻击。
  • 加密货币:SHA-256(比特币)、Keccak-256(以太坊)或 Scrypt(莱特币)。
  • 遗留系统:仅在兼容性要求时使用 MD5——永远不要用于安全场景。

常见问题

能否反转哈希值得到原始输入?

不能。哈希函数被设计为单向的。只能通过尝试所有可能的组合(暴力破解)或使用预计算表来找回原始输入。这就是加盐如此重要的原因。

MD5 完全没用了吗?

并非如此——在非安全场景中,MD5 仍然可以用于文件校验和、缓存键和去重。但永远不要用于密码、签名或任何安全相关的用途。

哈希值应该多长?

2026 年的安全标准,至少使用 SHA-256(256 位)。更短的哈希如 MD5(128 位)或 SHA-1(160 位)容易受到生日攻击。

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

不会。我们的 哈希生成器 完全在浏览器中运行,你的输入不会离开你的设备。

总结

哈希函数是现代计算的基础构建块。从验证下载到保护密码,选择正确的算法至关重要。使用我们的 哈希生成器 快速计算 MD5、SHA-256、SHA-512 等哈希值——全部在浏览器中完成。

试试这个工具?

打开工具 →