如何生成 MD5、SHA-256 等哈希

· 4 分钟阅读

哈希将任意输入(密码、文件、消息)转换为固定长度的字符串。相同的输入总是产生相同的哈希,但输入的极小变化会产生完全不同的哈希。这使得哈希对完整性验证、密码存储和数字签名至关重要。

哈希如何工作

哈希函数接收任意大小的输入,产生固定大小的输出:

输入 SHA-256 哈希(前 16 字符)
hello 2cf24dba5fb0a30e...
Hello 185f8db32271fe25...
hello! ce06092fb948d9ff...

请注意,仅更改一个字符(h 变 H)或添加一个字符,哈希就完全改变。这称为雪崩效应

常见哈希算法

算法 长度 状态 用途
MD5 32 字符 已被攻破(不安全) 旧校验和、非安全用途
SHA-1 40 字符 已被攻破(不安全) 仅用于旧系统
SHA-256 64 字符 安全 文件完整性、数字签名
SHA-512 128 字符 安全 高安全性应用

SHA-256 是目前大多数用途的标准。MD5 和 SHA-1 只应在与要求它们的旧系统交互时使用。

如何生成哈希

  1. 选择您的算法· 选择 MD5、SHA-1、SHA-256、SHA-384 或 SHA-512。除非有特殊理由,否则使用 SHA-256。
  2. 输入文本或上传文件· 输入或粘贴文本,或选择要哈希的文件。
  3. 复制哈希· 结果是一个十六进制字符串,可用于验证、存储或比较。

实用场景

文件完整性验证· 下载文件并将其哈希与官方发布的哈希对比。如果匹配,文件真实且未损坏。

密码存储· 应用存储密码的哈希,而不是密码本身。登录时,您的输入会被哈希并与存储的哈希对比。

数据去重· 对大文件哈希以快速判断它们是否相同,而无需逐字节比较。

API 安全中的 HMAC· 使用 HMAC(带密钥的哈希)签名 API 请求,确保它们在传输中未被篡改。

小贴士

常见问题

MD5、SHA-1 和 SHA-256 有什么区别?

MD5 生成 128 位哈希(32 个十六进制字符),SHA-1 生成 160 位(40 个字符),SHA-256 生成 256 位(64 个字符)。MD5 和 SHA-1 被认为在密码学上已被攻破。SHA-256 目前是安全的,推荐用于完整性验证和安全。

可以反向破解哈希以找回原始数据吗?

不可以。哈希函数按设计是单向的。您无法从数学上将哈希反向为其输入。不过,常用密码可以在预计算表(彩虹表)中查找,这就是为什么在哈希前为密码加盐很重要。

什么是 HMAC?

HMAC(Hash-based Message Authentication Code)将哈希函数与密钥结合。它同时验证数据的完整性和真实性 · 证明它未被篡改且由知道密钥的人生成。

我的数据会发送到服务器吗?

不会。所有哈希都通过 Web Crypto API 在您的浏览器中运行。您的文本和文件从不离开您的设备。