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 的文本也能算完,不会让页面失去响应
- 摘要只在本机内存里算出来,内容不会离开浏览器
使用方法
- 把文本粘贴进输入框
- 选择算法与输出编码(需要大写十六进制就勾上)
- 按 Ctrl/⌘ + Enter 或点「运行」
- 点「复制」取走摘要
常见问题
- 为什么提示「当前环境不提供 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 位,与输入多长无关。
相关工具
HMAC 签名
编码加密用密钥与消息算出 HMAC 签名,含空格与中文的密钥也能与 Node、Java、Python 算出一致结果。密钥只在本机参与运算,不会发出去。
Base64 编解码
编码加密把文本转成 Base64,或把 Base64 还原成文本,中文与 emoji 都按 UTF-8 正确处理。全部在浏览器本地完成,内容不上传。
密码生成
生成器生成随机强密码,长度与字符集可调,并实时给出熵值,让「强度」变成一个可以比较的数字。密码只在本机内存里,不记录也不上传。
URL 编解码
编码加密把中文、空格与符号转义成 %XX,或把 %XX 还原成文本;整条 URL 与单独的参数值要选对方式,选错不会报错,但链接会打不开。全部在浏览器本地完成。
HTML 实体编解码
编码加密把 < > & 与引号转成 HTML 实体,也能把实体还原成字符,而且只解一遍:&lt; 得到的是 < 而不是尖括号。全部在浏览器本地完成。
JWT 解析
编码加密把 JWT 拆成 header、payload、signature 三段并格式化,把 iat、exp 等时间声明换算成可读时间。只解析、不验证签名,输出里会写明。全部在浏览器本地完成,不上传。