哈希 / 摘要计算
一次计算 MD5、SHA-1、SHA-256、SHA-384、SHA-512。所有运算都在浏览器本地完成, 输入内容不会被上传。
待计算内容
0 字符哈希是什么:原理、用途与常见误区
哈希函数把任意长度的输入映射成固定长度的一串字符,这串字符叫摘要(digest)或散列值。 它有三个关键性质:同样的输入必定得到同样的输出(确定性);输入改动一个字节,输出大约一半的位会翻转 (雪崩效应);从输出反推输入在计算上不可行(单向性)。正是这三条让哈希可以用来校验完整性: 发布文件时附上一串 SHA-256,任何人下载后重新计算一遍,只要结果一致就说明文件没被改过。
哈希不是加密,也不是编码。加密是可逆的,前提是你有密钥;编码(如 Base64)不需要密钥, 任何人都能还原;哈希则设计成不可还原,也没有密钥。所以「把密码 MD5 一下再存」并不是加密, 它只是把明文换成了一串等长的指纹,一旦数据库泄露,攻击者照样可以拿这串指纹去撞库。
本站一次给出五种摘要:MD5(128 位)、SHA-1(160 位)以及 SHA-2 家族的 SHA-256 / SHA-384 / SHA-512。MD5 与 SHA-1 都已被公开构造出碰撞,不再适合任何安全场景, 但仍可用于非对抗性的校验和、缓存键、去重标识;需要签名、证书、软件发布校验时请用 SHA-256 及以上的算法。
密码存储要走另一条路:使用带盐的慢哈希,如 bcrypt、scrypt 或 Argon2id。 它们刻意把单次计算做得又慢又费内存,使得暴力破解的成本高到不可接受; 每个用户一份随机盐,则能防止攻击者用一张彩虹表打穿整个库。这是 MD5 / SHA 系列做不到的—— 它们的设计目标是快,而快恰恰是密码存储的大忌。
使用细节上有两点容易出错。其一是编码:哈希算法处理的是字节而不是字符,
中文、Emoji 必须先按 UTF-8 编码成字节再计算,编码不同结果就不同,本站统一按 UTF-8 处理。
其二是大小写:摘要常以十六进制显示,大小写只是书写习惯,a1b2… 与
A1B2… 是同一个值,比对前请先统一。
所有计算都在你的浏览器里完成:SHA 系列走浏览器自带的 crypto.subtle,
MD5 由本地脚本实现,输入内容不会离开本机,也不会被记录。
因此你可以放心地把生产配置、日志片段、令牌前缀这类敏感内容粘贴进来计算摘要。
哈希算法简介
- MD5:128 位摘要,速度快但已被证明不再安全,仅适合做校验、缓存键,不适合存储密码。
- SHA-1:160 位摘要,同样已不推荐用于安全场景。
- SHA-256 / SHA-384 / SHA-512:SHA-2 家族,目前被广泛用于签名、证书与数据完整性校验。
提示:密码存储请使用 bcrypt、scrypt 或 Argon2 等带盐的慢哈希算法,不要直接使用 MD5。