博客
简体中文

哈希计算 — MD5、SHA-256在线计算与文件校验

在浏览器中计算文本和文件的 MD5 与 SHA 哈希值

在浏览器中处理 · 不上传任何内容

文件哈希

把文件拖到这里,或点击选择文件。文件不会上传。

  • MD5
  • SHA-1
  • SHA-256
  • SHA-384
  • SHA-512

MD5 和 SHA-1 已存在已知的碰撞攻击,请勿用于安全用途。

功能简介

哈希函数能把任意数据变成固定长度的“指纹”。相同的输入总是得到相同的值,而哪怕只改一个字符,结果也会完全不同。因此哈希很适合用来确认文件没有被改动,或把下载的文件和官方公布的校验值进行比对。本工具会并排显示五种算法的结果。

使用方法

  1. 输入或粘贴文本,哈希值会立即更新。
  2. 要计算文件的哈希,把文件拖到文件区域,或点击“选择文件”。在文本框中输入内容会切换回文本模式。
  3. 选择 Hex 或 Base64 输出;Hex 还可以切换为大写。
  4. 要核对官方公布的校验值,把它粘贴到 预期哈希值 中。比对时忽略大小写,分组校验值中的空格和换行会被去掉,末尾的文件名(如 sha256sum 的输出)、sha256: 前缀以及 BSD 格式 SHA256 (file) = … 都能识别,页面会告诉你与哪种算法匹配。复制按钮仍然可以复制其他任意一个值。

计算方式

  • 文本先编码为 UTF-8 字节。一个汉字或韩文音节占 3 个字节,大多数 emoji 占 4 个字节。
  • SHA-1、SHA-256、SHA-384 和 SHA-512 使用浏览器的 WebCrypto API(crypto.subtle.digest)计算。
  • WebCrypto 不提供 MD5,因此由开源库 spark-md5 计算。
  • Base64 输出编码的是原始摘要字节,而不是 Hex 字符串。
  • 提供 MD5 和 SHA-1 只是为了兼容和完整性校验。安全相关的工作请使用 SHA-256 或更强的算法,密码请使用专门的算法。

示例

输入 算法 结果
abc MD5 900150983cd24fb0d6963f7d28e17f72
空字符串 MD5 d41d8cd98f00b204e9800998ecf8427e
abc SHA-256 ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
你好 SHA-256 670d9743542cae3ea7ebe36af56bd53648b0a1126162e78d81a32934a711302e

以上是标准测试向量,或经过 Node.js crypto 模块交叉验证的值。

常见问题

同样的中文文本,为什么和别的网站算出的哈希不一样?

因为文本转换成字节的方式不同。本工具对 UTF-8 字节计算哈希,所以“你好”的 MD5 是 7eca689f0d3389d9dea66ae112e5cfd7。使用 UTF-16 或 GBK 等旧编码的工具会得到另一个值。

文件会被上传吗?

不会。文件直接读入浏览器内存并在那里计算哈希。因为要加载到内存中,所以不支持超过 200 MB 的文件。

可以用 MD5 或 SHA-256 保存密码吗?

不安全。这些函数的设计目标是快,这让暴力破解的成本很低。请使用刻意设计得很慢的密码哈希算法,例如 bcrypt、scrypt 或 Argon2。

MD5 和 SHA-1 还能用吗?

用来发现意外损坏是可以的。但涉及安全的用途不行,因为两者都已有实际可行的碰撞攻击。

没找到想要的工具?