MD4哈希生成
使用我们的MD4哈希生成工具生成任意字符串输入的MD4哈希,确保数据安全。

MD4哈希生成是一款免费工具,可将任意字符串输入转换为128位MD4哈希,并在MD4哈希字段中返回结果。
什么是MD4哈希,它现在还安全吗?
MD4哈希是数据的定长指纹,但MD4在密码学上已经被攻破,不应再用于安全敏感的工作。无论输入多长,MD4都会将其转换为固定长度的摘要。MD4采用单向设计,因此结果中不包含原始输入。
Ronald Rivest于1990年设计了MD4。它生成128位摘要,通常表示为32个十六进制字符,并针对在32位计算机上快速运行而设计。MD4影响了包括MD5在内的后续算法,但研究人员在它发布后不久便发现了严重的碰撞弱点。利用实际可行的碰撞攻击,攻击者可以构造出MD4摘要相同的不同输入。
MD4在密码学上不适合用于数字签名、证书、身份验证、软件验证,以及任何攻击者可能篡改数据的完整性检查。绝不能使用它存储密码。现代密码存储需要采用带盐且刻意降低计算速度的密码哈希函数,例如Argon2id、scrypt、bcrypt或PBKDF2。

如何使用MD4哈希生成?
原样输入需要计算哈希的字符串,生成结果,然后复制MD4哈希下显示的值。MD4摘要由提供给算法的输入字节决定,因此即使只做很小的改动,也会产生不同的结果。
- 检查文本中是否有无意加入的空格、换行符或复制过来的格式。
- 将字符串作为输入,然后运行生成工具。
- 从MD4哈希中复制128位结果。
- 与其他值比较时,请确认两个系统使用了相同的字符编码和输入字节。

例如,字符串invoice-042会生成一个128位MD4摘要,通常显示为32个十六进制字符。将输入改为invoice-043后,会得到不同的摘要。无论输入只有一个字符,还是一大段文本,摘要长度都保持不变。
计算在服务器上完成。你的输入会通过HTTPS发送到服务器,但不会被存储。由于文本需要离开你的设备才能进行处理,请勿提交密码、身份验证令牌、私钥或其他机密信息。
MD4可以解密或还原吗?
MD4哈希无法解密,因为哈希不是加密,也不存在解密密钥。MD4在生成固定的128位结果时会丢弃信息,因此摘要中不包含可恢复的原始输入副本。
不过,这并不意味着MD4摘要具有保密性。攻击者可以猜测可能的输入,逐一计算哈希,再比较结果。短密码、常用短语、电话号码和可预测的标识符,往往可以通过字典搜索或预计算列表找到。MD4碰撞攻击与还原攻击并不相同。碰撞攻击是寻找两个哈希相同的输入,而还原尝试则是确定某个已知哈希背后的特定输入。

哪些地方仍在使用MD4?
MD4目前主要出现在旧系统和旧格式中,因为更改它们会破坏兼容性。这些残留用途并不代表MD4适合新的安全设计。
- 旧版Windows身份验证将MD4用作NT哈希格式的一部分。这是出于兼容性要求,并非推荐的密码存储方案。
- eDonkey和eMule标识符在ed2k方案中使用基于MD4的文件哈希和分块哈希。
- 旧校验和记录在根据以前发布的值核对归档文件时,可能需要使用MD4。
- 封闭式去重流程可能会继续使用MD4,前提是输入可信,并且与现有索引保持兼容比抵御恶意碰撞更重要。
如果要建立新的校验和或完整性系统,请改用SHA-256或SHA-3等当前可用的MD4替代方案。从MD4换成MD5无法解决碰撞问题,因为MD5也已被攻破。只有在旧格式明确要求MD5时,MD5哈希生成才有用。现有规范要求使用Whirlpool时,则可以使用Whirlpool哈希生成。
为什么两个MD4结果有时不一样?
只要底层输入字节不同,两个MD4结果就会不同,即使显示的文本看起来一样。在认定某个结果有误之前,请先检查编码、空白字符和标点符号。
- 开头和结尾的空格属于数据,会改变摘要。
- Windows和Unix换行符使用不同的字节序列,因此复制的多行文本可能会得到不同的哈希。
- 大写字母和小写字母属于不同的输入。
- 带重音符号的字符可能采用看起来相同但字节不同的Unicode组合形式或分解形式。
- 文本转换为字节时,结果取决于所使用的字符编码。
- 以字符串形式提供时,00123这样的数字会按文本计算哈希。去掉开头的零会改变输入。
- 空字节序列也有有效的MD4摘要,不过某些界面可能要求先提供输入才能运行。
无论输入多长,MD4始终返回128位结果。对于非常长的输入,固定的摘要大小并不能表明处理了多少文本或数据。
常见问题
MD4和MD5是同一种算法吗?
不是。MD5是Ronald Rivest于1992年发布的后续算法,尽管MD4和MD5都会生成128位摘要。两者的输出不能互换,而且都存在实际可利用的碰撞弱点。
MD4摘要中的字母大小写有区别吗?
大写和小写的十六进制表示可以描述相同的摘要字节。例如,十六进制字母A–F和a–f具有相同的数值。某些软件在比较文本时区分大小写,因此必要时应统一表示形式,或比较解码后的字节。
为什么Windows NT哈希与MD4有关?
计算NT哈希时,会先将密码编码为UTF-16LE,再使用MD4进行处理。该格式不加盐且计算速度快,因此截获的哈希容易受到猜测攻击。在某些旧版身份验证场景中,它还支持传递哈希攻击,攻击者可能只需持有哈希即可通过身份验证,无须还原密码。
MD4可以用作消息认证码吗?
将秘密值直接添加到消息前面,再使用MD4计算哈希的简单构造并不安全,部分原因是MD4具有长度扩展特性。某些旧规范定义了HMAC-MD4,但它只应限于无法避免的兼容性工作。新系统应使用当前可用的HMAC构造,例如HMAC-SHA-256。
这个工具能计算文件的MD4吗?
此工具用于处理字符串输入,因此不要认为粘贴文件内容就等同于对原始文件字节计算哈希。二进制文件、字符转换和换行符变化都可能产生不同的结果。如果需要计算旧版文件校验和,请使用明确支持MD4的本地文件哈希工具,然后确认预期值对应整个文件,还是ed2k之类的分块格式。