文本 MD5 哈希值计算
MD5 已被证明存在碰撞风险,不建议用于密码存储等安全敏感场景,仅适合文件校验、去重等一般用途。文件计算完全在浏览器本地进行,不会上传。
MD5 是一种把任意长度的数据压缩成 128 位摘要的哈希算法,通常写成 32 位十六进制字符串。本工具提供两种模式:在「文本」模式下,输入一段文字,立即得到它的 MD5;在「文件」模式下,选择任意一个文件,计算整个文件内容的 MD5。常见用途是核对下载文件有没有损坏或被替换、给内容做简单的去重标识。需要先说清楚:MD5 早已被证明存在碰撞问题,不能用于存储密码或做任何安全签名,页面底部也有同样的提示。另外,哈希是单向的,本工具只能计算 MD5,不能把 MD5 反推回原文。
文本 hello 的 MD5 是 5d41402abc4b2a76b9719d911017c592。把首字母改成大写变成 Hello,结果完全不同:8b1a9953c4611296a827abf8c47804d7,这说明哪怕只改一个字符,摘要也会彻底变化。中文也可以:你好 的 MD5 是 7eca689f0d3389d9dea66ae112e5cfd7。上面三个值都用 Node.js 自带的 MD5 与本工具使用的算法逐一交叉核对过,结果一致。
不能。MD5 计算极快,而且已经有成熟的碰撞构造方法和海量的彩虹表,攻击者可以很快把常见密码的 MD5 反查出来。存储密码应使用专门设计的慢速算法(如 bcrypt、scrypt、Argon2)并加盐,而不是 MD5。
严格说不能,因为哈希是单向的,原文信息已经被压缩丢弃。网上所谓的「MD5 解密」其实是拿预先算好的常见字符串对照表去查。本工具不提供这类反查,只做正向计算。
先确认是不是在文本模式下误输入了内容:校验下载文件要用「文件」模式并选择文件本身,而不是粘贴文件名。其次确认下载是否完整、是不是选错了版本。如果是对文本做校验,留意末尾有没有多余的空格、换行,以及换行符是 CRLF 还是 LF。这些看不见的字符都会让摘要不同。
最常见的原因是字符编码或换行符不同。本工具把文本按 UTF-8 编码;如果对方工具用 GBK 等其他编码处理中文,结果就会不同。纯英文和数字在常见编码下字节相同,通常不会有这个问题。
对非对抗场景仍然够用,例如确认文件传输过程中有没有因网络问题损坏、给文件或文本生成一个简短的指纹用于去重、核对某些老系统仍在使用 MD5 的校验值。凡是需要防止他人恶意篡改的场合,都应改用 SHA-256 或更新的算法。
MD5 由页面里的一段 JavaScript 在你的浏览器本地计算,文本和文件内容都不会被上传,也不会被保存,代码中没有任何网络请求。选择的文件只是被浏览器读入内存用于计算,关闭或刷新页面后即被释放。