UltKit

哈希值生成器

输入文本或选择文件,即可并排查看其MD5、SHA-1、SHA-256、SHA-384和SHA-512摘要,每项都有单独的复制按钮。哈希计算在您的设备上完成,使用浏览器的Web Crypto API和本地MD5程序,文件不会被上传。

0 个字符 · 0 个词 · 0 行

MD5不适用于安全场景
—
SHA-1不适用于安全场景
—
SHA-256
—
SHA-384
—
SHA-512
—

0 个字符 · 0 个词 · 0 行

完全在当前浏览器标签页中运行,您的文本不会被上传或保存。

摘要长度

长度和空输入的摘要是在构建本页时,用本页自带的 MD5 和 Web Crypto API 计算得出的。

算法摘要位数十六进制长度块位数状态空输入的哈希
MD512832512已被破解:2004 年发现碰撞d41d8cd98f00b204e9800998ecf8427e
SHA-116040512已被破解:2017 年演示了碰撞da39a3ee5e6b4b0d3255bfef95601890afd80709
SHA-25625664512安全(SHA-2)e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
SHA-384384961024安全(SHA-2)38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b
SHA-5125121281024安全(SHA-2)cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e

五种算法,其中两种已被淘汰

哈希函数可以把任意大小的输入变成固定长度的“指纹”。只改动一个字符,输出中大约一半的位都会翻转,所以即便是“UltKit”和“ultkit”,得到的摘要也毫无关联。MD5 由 Ron Rivest 于 1992 年在 RFC 1321 中发布,输出 128 位(32 个十六进制字符)。2004 年,王小云等人展示了如何构造两个不同的输入却得到相同的 MD5 哈希,到 2012 年,Flame 恶意软件就利用 MD5 碰撞伪造了一张微软代码签名证书。SHA-1(160 位)也遭遇了同样的命运:2017 年,Google 与阿姆斯特丹 CWI 公布了首个真实碰撞 SHAttered。这两种算法在此都标注为“不适用于安全场景”。

SHA-256、SHA-384 和 SHA-512 属于 SHA-2 系列,由 NIST 在 FIPS 180-4 中规范,目前尚无已知的实际攻击方法。SHA-256 是软件下载校验、Git 新版对象格式、TLS 证书和比特币的默认选择。MD5 和 SHA-1 仍可用于不存在恶意对抗的场景,例如发现文件意外损坏或为文件去重,所以许多下载页面至今仍会列出它们。

为什么哈希不等于加密

加密在设计上是可逆的:持有密钥的人可以还原出原文。哈希没有密钥,也无法逆向,因为有无数种输入对应同一个摘要。但这并不意味着哈希可以安全地保存机密。攻击者拿到较短或常见输入的 SHA-256 值后,只需不断对候选内容计算哈希直到匹配,而且预先计算好的彩虹表已经覆盖了数十亿个已知密码。快速哈希生来就追求速度,现代 GPU 每秒可以尝试数十亿次 SHA-256 猜测。

因此,保存密码应使用刻意设计得很慢且带盐的密码哈希,如 Argon2、bcrypt 或 scrypt,千万不要直接用 MD5 或 SHA-256;密码本身可以用密码生成器来创建。本页适合发挥快速哈希的长处:核对下载的文件是否与发布方列出的校验值一致、不打开文件就比较两个文件是否相同,或检查自己代码算出的摘要。文本按 UTF-8 编码且不含末尾换行符来计算哈希,这通常就是结果与终端中 echo "text" | sha256sum 不一致的原因。开发者工具总览页用同一个示例对比了哈希与可逆编码的区别。

常见问题

如何用SHA-256校验值验证下载的文件?
通过“哈希文件”选择文件,然后把 SHA-256 一行与发布方网站上的值对比。每个字符都必须一致;大写十六进制只是改变字母 a 到 f 的显示方式。
MD5或SHA-256哈希值可以解密吗?
不能,因为根本没有可解密的内容。声称能逆向哈希的网站,其实是在已哈希字符串的对照表中查找摘要,这只对较短或常见的输入有效。
MD5已被攻破,为什么还提供?
许多系统仍在发布 MD5 校验值,它用来发现意外改动完全够用。只有面对能刻意构造碰撞文件的攻击者时,它才不可靠。
空字符串的MD5哈希值是多少?
d41d8cd98f00b204e9800998ecf8427e。看到这个值通常说明程序对空内容做了哈希,例如文件在计算哈希之前就没能加载成功。
SHA-512比SHA-256更安全吗?
两者都未被攻破,也远非暴力破解所能及。SHA-512 的输出更长,在 64 位处理器上可能更快,但用于校验值和签名时,SHA-256 是更普遍被期待的选择。