MD5生成器

MD5可对任何输入数据(文本、文件或数据流)生成128位(对应32个十六进制字符)的摘要值。尽管自2004年起该算法在密码学场景中已被攻破,但它仍是快速完整性校验的标准工具(如软件包下载校验、重复数据消除的指纹识别,以及某些场景下的git blob命名)。您只需粘贴文本或上传文件,该生成器即可在本地返回十六进制摘要值,无需上传任何数据。

如何生成 MD5 哈希值

  1. 1

    选择输入

    用于输入任意字符串的文本框,或支持最大约2 GB文件的文件选择器。

  2. 2

    该工具在本地计算 MD5

    文件以分块方式进行流式处理,因此大文件不会占用过多内存。

  3. 3

    读取十六进制摘要

    32个十六进制字符,即标准的MD5表示形式。

  4. 4

    复制或比对

    与预期的哈希值(如软件包作者发布的MD5值)进行比对,或复制下来留存记录。

MD5是什么(以及不是什么)

  • 确定性。 同一输入始终产生相同的128位输出。
  • 固定长度。 无论输入数据大小如何(一个字节还是一吉字节),均生成32个十六进制字符。
  • 单向性。 给定一个MD5摘要值,无法将其逆向还原为原始输入(仅对存在彩虹表的极短输入例外)。
  • 作为密码学哈希已被攻破。 碰撞可被轻易构造。切勿在以下场景中使用 MD5:
    • 密码存储(请使用 bcrypt、scrypt、Argon2)。
    • 数字签名(请使用 SHA-256 或 SHA-3)。
    • TLS证书签名(现代浏览器已拒绝)。
    • 任何攻击者可能利用的、涉及安全的完整性声明。

MD5仍然适用的场景

  • 非对抗性完整性校验。 确认文件在传输过程中未损坏。
  • 去重处理。 对存储系统中相同的数据块进行指纹识别。
  • 对低更新频率的静态资源进行ETag生成
  • 缓存键与内容寻址哈希。

实例演示

输入文本 MD5摘要
(空字符串) d41d8cd98f00b204e9800998ecf8427e
a 0cc175b9c0f1b6a831c399e269772661
abc 900150983cd24fb0d6963f7d28e17f72
The quick brown fox jumps over the lazy dog 9e107d9d372bb6826bd81d3542a419d6
The quick brown fox jumps over the lazy dog.(结尾句点) e4d909c290d0fb1ca068ffaddf22cbd0

请注意,仅一个字符(末尾的句点)就彻底改变了整个摘要,这就是所谓的“雪崩效应”。

MD5与SHA系列算法对比

算法 输出长度 是否已被碰撞攻破? 当前典型用途
MD5 128位 是(2004年) 完整性校验、重复数据消除、ETag
SHA-1 160位 是(2017年) 遗留用途;新项目应避免使用
SHA-256 256位 TLS、代码提交、通用密码学
SHA-3 224–512位 SHA-2的现代替代方案
BLAKE3 256位 快速替代SHA-2的方案

常见问题

不可以。MD5算法在现代GPU上极易被暴力破解,且自2004年起已被攻破。请使用专门的密码哈希函数:Argon2、scrypt或bcrypt。

对于普通完整性校验(下载是否完成):安全;对于对抗性完整性校验(是否有人将文件替换为恶意版本):不安全,应使用SHA-256。

不会。哈希处理通过 WebCrypto 和类型化数组在您的浏览器中执行。文件始终不会离开您的设备,这在处理私密数据或受保密协议约束的内容时尤为重要。

现代浏览器能够轻松处理约2GB的流式输入数据。对于体积极大的文件(数十GB),使用md5sumopenssl dgst -md5等命令行工具进行哈希处理效果更佳。

规范并未规定大小写。大多数Unix工具输出小写字母,而部分Windows工具输出大写字母。比对时需将两侧统一为相同的大小写形式。

相关工具

此工具还提供其他语言版本