哈希生成器

一次算出 MD5、SHA-1、SHA-256、SHA-384、SHA-512,全在浏览器里完成。

一次给出五种摘要。不会上传 —— 哈希在页面里算,输入不会离开浏览器。

什么时候会用到

  • 下载了一个文件,想在运行它之前核对官方公布的校验和。
  • 对比两个构建产物,需要与发布说明里用的是同一种摘要算法。
  • 老系统里存的是 MD5,你要复现一个出来做比对。
  • 写测试用例,需要一个已知字符串的已知摘要。

别的哈希工具差在哪里

不少哈希工具仍然把 MD5 摆在第一位,却从不说明它在安全上已经被攻破。用 MD5 做校验和没问题,用它存口令不行 —— 这个区别值得一个标签,而不是一句脚注。

只对文本框里的字符算哈希、却不说明编码方式的工具,遇到非 ASCII 字符或 Windows 行尾时,结果和 sha256sum 对不上。

在服务器端算的在线哈希站,能看到你输入的明文。对校验和通常无所谓,对 token 或密钥就不是 —— 而从外面看不出自己处在哪种情况。

常见问题

该用哪个算法?

除非外部环境强制,选 SHA-256。文件校验的默认就是 SHA-256;SHA-1 和 MD5 出现在老系统已经在用的场合。这两个都不能用于口令 —— 口令要用专门的慢哈希(bcrypt、scrypt、Argon2),而不是通用摘要。

MD5 或 SHA-256 能解密吗?

不能。哈希在设计上就是单向的:MD5 那 128 位摘要没法反推回输入,任何工具(包括这一个)都没有一个真的能「解密」的按钮。那些宣称能解 MD5 的网站,做的是拿你的哈希去查一张预先算好的表(彩虹表,或者泄露的口令库),命中就把产生这个摘要的原文还给你。它只对「弱到已经进过那张表」的口令有效 —— 而这正是口令绝不该用 MD5 或 SHA-256 这类通用摘要直接存的原因。

为什么我算的和 sha256sum 对不上?

几乎总是行尾或编码。sha256sum 算的是文件的字节,文件里是 CRLF 就包含 CRLF;把同样的文本粘进浏览器,得到的是只有 LF 的字节 —— 因为文本是按 UTF-8、按文本框里实际的那些字符算的。开头的 BOM 也会悄悄改变结果:三个在任何编辑器里都看不见的字节,照样进摘要。要核对官方公布的校验和,请把文件的字节(把文件拖进来)算一遍,而不是算它的文本。

这和给文件算哈希是一回事吗?

算法相同,输入不同。把文件拖进来,算的是它按原样存储的字节,这正是校验和想要的;把文本粘进来,算的是这些字符的 UTF-8 编码,这正是字符串想要的。

能用它给口令算哈希吗?

能算,但不该把结果存下来。SHA-256 这类快速通用摘要让攻击者每秒能试几十亿次。存口令需要的是一个刻意慢、并且每个用户带独立盐的函数。

其它工具