MD4 哈希生成器

在浏览器中即时生成任意文本的 MD4 哈希值。支持 UTF-8、十六进制或 Base64 输入,输出十六进制或 Base64。免费、私密,无需上传。

MD4 在密码学上已被攻破(可以构造碰撞)。仅可用于校验和或兼容旧系统,不要用于安全用途。
MD4

完全在浏览器中运行,您的数据不会被上传。

什么是 MD4 哈希生成器?

MD4 是 Ron Rivest 设计的 128 位哈希函数(RFC 1320,1990 年),是 MD5、SHA-1 和 RIPEMD 的直接前身。本工具会在你输入时实时计算文本或原始字节(十六进制或 Base64)的 128 位 MD4 摘要,并以 32 个十六进制字符或 Base64 显示。

如何使用 MD4 哈希生成器

  1. 在 要计算哈希的文本 中输入或粘贴内容——摘要会随输入实时更新(输入框为空时显示空输入的哈希值)。
  2. 选择 输入编码:文本 (UTF-8) 会把字符按 UTF-8 计算哈希,十六进制字节 或 Base64 则对解码后的原始字节计算哈希。
  3. 选择 输出格式(十六进制小写、十六进制大写或 Base64),然后点击 复制。

示例

输入
abc
输出
a448017aaf21d8525fc10ae87aa6729d

3 个 ASCII 字节“abc”的 MD4(UTF-8,十六进制小写输出),即标准测试向量。

何时使用 MD4 哈希生成器

MD4 文本工具适合对字符串计算哈希:复现文档或代码中的值、构造测试向量、比对 API 签名的输入,或检查程序应输出的结果。不要用它来防范攻击者——它在密码学上已被攻破。也不要用它校验下载的文件:把文件内容复制到文本框会改变换行符和编码,请使用 MD4 文件校验工具。新的完整性校验请使用 SHA-256。

MD4 哈希生成器 的工作原理

MD4 先用一个 1 比特、若干 0 和 64 位小端序消息长度把消息填充为 512 位的整数倍,然后让每个 512 位分组在四个 32 位字上经过三轮、每轮 16 次运算,使用非线性函数 F、G、H、加法和循环左移。四个最终字按小端序拼接,构成 128 位摘要。文本会先转换为字节(默认 UTF-8),因此相同的字符总会得到相同的哈希值。

常见用例

  • 在单元测试或测试数据中核对字符串的预期 MD4
  • 对从调试器、抓包结果或协议规范中复制的十六进制字节计算哈希
  • 比较两种编程语言之间结果不一致的 MD4 输出
  • 从文本生成确定性的标识符或缓存键
  • 复现旧系统中保存的历史 MD4 值

安全提示

MD4 已被彻底攻破。 只需手算规模的计算量就能找到碰撞,而它至今仍是 NTLM 密码哈希的核心,这正是 NTLM 哈希如此容易被破解的原因。仅用于兼容场景(例如 eDonkey/ed2k 链接、NTLM 研究);绝不要用于安全用途。普通哈希也不适合存储密码:请使用 Argon2、scrypt 或 bcrypt 等慢速、加盐的密码哈希。所有计算都在你的浏览器本地完成,输入的内容不会发送到任何地方。

常见问题

MD4 现在还用在哪里?

Windows NT/NTLM 的密码哈希就是对 UTF-16LE 密码计算的 MD4,ed2k(eDonkey)文件链接也是由文件分块的 MD4 哈希构成。本工具计算的是普通 MD4;NTLM 是对 UTF-16LE 字节计算 MD4,因此需要把密码按 UTF-16LE 以十六进制输入。

为什么我的系统不支持 MD4?

OpenSSL 3 把 MD4 移到了 legacy provider,因此 openssl md4 或 Node.js 的 crypto.createHash("md4") 默认可能会失败。本工具在浏览器中实现 MD4(hash-wasm),不受影响。

为什么只改一个字符,哈希值就完全变了?

这就是每种密码学哈希都刻意追求的雪崩效应:输入翻转一个比特,128 位输出中大约一半会改变,因此相似的输入会得到毫不相关的摘要。

末尾的空格或换行符有影响吗?

有。哈希覆盖每一个字节,所以 abc 和后面跟着换行符的 abc 会得到不同的 MD4 值。请确保输入中恰好是你想计算哈希的那些字节。

探索更多分类