piapia123
zh

MD5 / SHA 哈希计算

编码加密

所有处理都在浏览器本地完成,数据不上传服务器

输入
输出

对文本计算 MD5、SHA-1、SHA-256 或 SHA-512 摘要,输出十六进制或 Base64。中文与 emoji 一律按 UTF-8 字节计算,所以「你好」的摘要与 openssl、sha256sum 对同一个文件算出来的完全一致 —— 换成按字符算,中英混排就会得到一个谁也验证不过的结果。MD5 由本工具自带实现,因为浏览器原生的 Web Crypto 已经不提供它了。最后提醒一句:MD5 与 SHA-1 早已不适合用于密码或签名,它们只适合做校验和、复现别人给的摘要。

功能

  • 四种算法:MD5、SHA-1、SHA-256、SHA-512
  • 输出十六进制(可切大小写)或 Base64
  • 中文与 emoji 按 UTF-8 字节计算,结果与 openssl、sha256sum 逐位一致
  • MD5 为内置实现 —— 浏览器 Web Crypto 已不提供 MD5
  • 数 MB 的文本也能算完,不会让页面失去响应
  • 摘要只在本机内存里算出来,内容不会离开浏览器

使用方法

  1. 把文本粘贴进输入框
  2. 选择算法与输出编码(需要大写十六进制就勾上)
  3. 按 Ctrl/⌘ + Enter 或点「运行」
  4. 点「复制」取走摘要

常见问题

为什么提示「当前环境不提供 Web Crypto」?
SHA 系列用的是浏览器原生接口 crypto.subtle,而它只在安全上下文里存在:通过 https:// 或 localhost / 127.0.0.1 打开本页才有。用 http:// 或内网 IP 打开时它直接不可用 —— 这是浏览器的安全策略,不是本工具的限制。这种环境下仍然可以算 MD5,因为那份实现不依赖它。
MD5 还能用吗?
做校验和可以,做安全用途不行。MD5 与 SHA-1 都已被证实能构造出碰撞 —— 两份不同的内容可以得到同一个摘要。所以不要用于密码存储、数字签名或防篡改校验。密码请用 bcrypt、scrypt 或 Argon2 这类专门设计的慢哈希。
哈希和加密有什么区别?
哈希是单向的:由内容能算出摘要,由摘要推不回内容,也不存在「解密」。加密是可逆的,需要密钥。所以网上那些「MD5 解密」本质上是在查彩虹表或暴力枚举,解出来的也只是碰巧命中的原文。
中文算出来的摘要为什么和别人给的不一样?
多半是编码不同。同一个「你好」在 UTF-8 下是 6 个字节,在 GBK 下是 4 个,摘要自然不同。本站固定按 UTF-8 处理,这也是今天网页与接口的通用约定。
摘要有长度上限吗?
输入上限是 5 MB 左右,超过会给出明确提示而不是让页面卡死。摘要本身的长度是固定的:MD5 128 位、SHA-1 160 位、SHA-256 256 位、SHA-512 512 位,与输入多长无关。

相关工具