MD5 和 SHA 哈希

给文字或文件算 CRC32、MD5、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512 或 SHA3-256、SHA3-384、SHA3-512。文字按所选字符编码计算,文件按原始字节。可以加密钥做 HMAC,CRC32 除外。也可以贴一段已知摘要来核对。

这是校验,不是存密码的地方

MD5 和 SHA 把文字或文件收成一段短摘要。同样的输入得到同样的结果,改一个比特结果就会大变。人们用它核对下载、做缓存键,或在不传文件的情况下看两份内容是否相同。

不要用它们保存密码。MD5 和 SHA-1 已经不能抵抗碰撞。SHA-256 适合做校验,单独拿来存密码又太快。存密码要用 bcrypt 或 Argon2,这一页不提供那些。

怎么用

  1. 输入文字或选择文件。文件按字节计算,不看字符编码。文字按你选的编码计算,默认 UTF-8,多一个换行摘要就不同。同一段中文,GBK 和 UTF-16 的摘要不一样。
  2. 算法可选 CRC32、MD5、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512、SHA3-256、SHA3-384、SHA3-512。新做的校验优先选 SHA-256。CRC32 是短校验,不能填 HMAC 密钥。
  3. 下载页上常见的是十六进制。大小写对同一段摘要没有区别,核对时忽略大小写。
  4. 只有对方也用同一把密钥做 HMAC 时才填写密钥。留空是普通哈希,不是用空字符串做 HMAC。
  5. 对不上时,是字节不同、算法不同或编码不同,不是算式坏了。

什么会让结果变掉

  • 字符编码。UTF-8、GBK 和 UTF-16 不是同一串字节。HMAC 密钥仍按 UTF-8,只有正文走这个选项。“中文”如果和服务器对不上,先把编码改成对方的,或用 字符串转字节 对一下。
  • BOM、末尾换行,以及 Windows 的 \r\n 和 Unix 的 \n。
  • HMAC 和普通哈希即使算法名字一样,也不是同一种运算。
  • SHA-384 和 SHA-512 走浏览器的加密接口,需要 https 或 localhost。CRC32、MD5、SHA-1、SHA-224、SHA-256 和 SHA3-256、SHA3-384、SHA3-512 在页面里直接计算。

可以拿五个字母 hello、不加换行做检查:SHA-256 以 2cf24dba 开头。对不上,多半是文本框里多了空格或换行。

常见问题

能从哈希还原原文吗?

不能。摘要不是编码。要还原内容用 Base64。

和“把文件内容粘贴进去”的网站结果不同。

粘贴会改变字节。请用文件按钮,让摘要覆盖文件本身。