哈希计算器与文件校验
输入文本或拖入文件,MD5、SHA-1、SHA-256、SHA-384、SHA-512 会一起显示。把下载页给出的校验值贴进来,就能知道是否一致。不会上传任何内容,计算都在本页里完成。
按 UTF-8 共 13 字节,13 个字符
哈希值
正在计算…
与预期的哈希值比对
粘贴一个校验值,就能看出是否一致。不区分大小写,空格会被忽略,算法按长度自动判断。
十六进制和 Base64 都能识别。如果打开了 HMAC,比对的是 HMAC 值。
哈希能说明什么,不能说明什么
MD5 和 SHA-1 已有公开的碰撞攻击,不要用于签名、证书或存放密码。用来检查文件有没有在下载等过程中意外损坏,它们仍然够用。对安全有要求时,请用 SHA-256 或更长的算法。
哈希值一致,只能证明文件与生成哈希值时的内容相同。如果哈希值和下载文件放在同一个网站上,能改文件的人也能改哈希值,所以它不能证明文件是谁制作的。
它是怎么工作的
- •文本会先按 UTF-8 变成字节再计算,并显示字节数,因为被计算的正是这些字节。所以带重音符号或表情符号的文字,字节数可能和你想的不一样。文件则按原始字节计算。
- •SHA-1、SHA-256、SHA-384、SHA-512 由浏览器自带的 Web Crypto 提供。浏览器没有提供 MD5,所以本页自带了一份 MD5 实现(RFC 1321),按每块 4 MB 分段读取文件。接受 200 MB 以内的文件,计算期间整个文件会放在内存里。
- •打开 HMAC 后,密钥会按 RFC 2104 的方式混入计算,只有知道密钥的人才能得到同样的结果。密钥比算法的分组长度更长时,按标准处理;空密钥也允许。
- •比对框会去掉空格,十六进制不区分大小写,并按长度判断算法:32 位十六进制是 MD5,40 位是 SHA-1,64 位是 SHA-256,96 位是 SHA-384,128 位是 SHA-512。长度对应的 Base64 值也能识别。
- •其中 MD5 和 HMAC 的代码,用 RFC 1321、FIPS 180 的标准测试值,以及 macOS 自带的 md5、shasum、openssl 和 Python,对几百组输入做过核对。
常见问题
- 我的文件或文本会被上传吗?
- 不会。文本和文件都由本页里运行的代码读取并计算,不会发送到任何地方。你为 HMAC 输入的密钥同样只留在本页。
- MD5 安全吗?
- 用于安全目的并不安全。有人能构造出两个 MD5 或 SHA-1 相同的不同文件,所以都不该用于签名、证书或存放密码。用来检查下载的文件有没有在传输中损坏,它们仍然够用。只要需要防范攻击者,就用 SHA-256 或 SHA-512。
- 哈希值一致,文件就安全吗?
- 一致只说明文件与生成哈希值时的内容相同。如果哈希值和下载链接在同一个网页上,能替换文件的人也能替换哈希值。请从另一个可信的地方获取校验值,有发布者签名时就用签名。
- 为什么我的结果和别的工具不一样?
- 最常见的原因是输入不同:末尾多了换行、Windows 换行符,或者文本来自另一种编码保存的文件。请把这里显示的字节数和另一个工具对一下。文件请直接计算原文件,不要用打开再另存过的副本。