MD4在线加密工具
计算设置
同一段中文按不同编码取字节,摘要必然不同;对不上时先核对这一项。
第二轮起,把上一轮的 32 位小写十六进制串按 UTF-8 再送入运算。
边输入边出结果
先去首尾空白
跳过空行
去重
MD4 早已被证明可以低成本构造碰撞,请只把它用于兼容老协议与自查场景。本工具仅供参考,不代表任何建议,不要用它承担口令保管或身份核验的职责。
待计算内容
MD4 摘要结果
32 位小写
32 位大写
16 位小写
16 位大写
NTLM 口令哈希
16 位是从 32 位摘要里截取第 9 到第 24 个字符,属于业内约定的精简写法,并非另一种算法;NTLM 行按 Windows 的口径把原文按 UTF-16LE 取字节后直接做一次 MD4。
为什么今天还需要一个 MD4 工具
MD4 由 Ron Rivest 在 1990 年提出,写进了 RFC 1320,是 MD5 的直系前辈。它把任意长度的输入压成 128 位、也就是 32 个十六进制字符的摘要,速度快、实现短小,当年被大量塞进各类协议里。
后来它被彻底攻破,用一台普通笔记本就能在极短时间内找出碰撞,因此新项目不该再选它。可它留下的痕迹一直没消失:Windows 的 NTLM 口令哈希本质就是把口令按 UTF-16LE 取字节后做一次 MD4;rsync 的旧校验、eDonkey/eMule 的 ed2k 分块摘要、某些十几年前的内部接口签名,都还在用它。要跟这些系统对话,就得有一个算得准的 MD4。
这个页面把常用口径一次备齐:单条文本同时给出 32 位与 16 位、大小写四种写法,外加一行 NTLM 摘要;多行文本可以逐行批量算并导成表格;本地文件按 2MB 分片读取,几个 GB 的镜像也不会把内存撑满。运算由浏览器里的 js-md4 完成,输入内容与文件不会离开这台机器。
后来它被彻底攻破,用一台普通笔记本就能在极短时间内找出碰撞,因此新项目不该再选它。可它留下的痕迹一直没消失:Windows 的 NTLM 口令哈希本质就是把口令按 UTF-16LE 取字节后做一次 MD4;rsync 的旧校验、eDonkey/eMule 的 ed2k 分块摘要、某些十几年前的内部接口签名,都还在用它。要跟这些系统对话,就得有一个算得准的 MD4。
这个页面把常用口径一次备齐:单条文本同时给出 32 位与 16 位、大小写四种写法,外加一行 NTLM 摘要;多行文本可以逐行批量算并导成表格;本地文件按 2MB 分片读取,几个 GB 的镜像也不会把内存撑满。运算由浏览器里的 js-md4 完成,输入内容与文件不会离开这台机器。
三步拿到结果
第一步 · 选对处理对象
只算一句话就用默认的单条文本;手里是一列账号、订单号或口令,切到多行模式,一行一条;要给安装包、镜像留摘要,切到本地文件后把文件拖进虚线框。
第二步 · 把口径对齐
含中文时先确认编码:跟 Windows 账号体系打交道选 UTF-16LE,其余场合基本都是 UTF-8。老接口习惯在明文前后拼一段固定盐值,就把盐值填上并选好拼接位置;对方明确说明摘要算了两遍,把迭代轮数改成 2。粘贴的内容可能带多余空格或换行,勾上去掉首尾空白更稳妥。
第三步 · 取走需要的那一行
默认边输入边出结果,右侧五行摘要各配一个复制按钮,也可以点「复制全部结果」一次带走。多行模式支持复制整张表或导出 Excel;文件模式的摘要按原始字节计算,与 certutil、md5sum 家族的命令行输出可以直接对照。
只算一句话就用默认的单条文本;手里是一列账号、订单号或口令,切到多行模式,一行一条;要给安装包、镜像留摘要,切到本地文件后把文件拖进虚线框。
第二步 · 把口径对齐
含中文时先确认编码:跟 Windows 账号体系打交道选 UTF-16LE,其余场合基本都是 UTF-8。老接口习惯在明文前后拼一段固定盐值,就把盐值填上并选好拼接位置;对方明确说明摘要算了两遍,把迭代轮数改成 2。粘贴的内容可能带多余空格或换行,勾上去掉首尾空白更稳妥。
第三步 · 取走需要的那一行
默认边输入边出结果,右侧五行摘要各配一个复制按钮,也可以点「复制全部结果」一次带走。多行模式支持复制整张表或导出 Excel;文件模式的摘要按原始字节计算,与 certutil、md5sum 家族的命令行输出可以直接对照。
这些活儿它能干
核对 NTLM 摘要:把测试口令按 UTF-16LE 算一次,和域控导出、抓包解析里的那串值比一比,就知道口令本身对不对,还能验证自己的实现有没有把编码写错。
接老系统的签名:一些十几年前的接口用「盐值 + 参数 + MD4」拼签名,本地把盐值和拼接顺序摆好,逐行试几遍,比反复发请求试错快得多。
写单元测试的基准值:为 Java、Go、Python、C# 里的 MD4 实现准备预期值,用页面里的示例先算好,写进断言,跨语言结果不一致时可以逐段定位。
批量生成对照表:把一列编号或名称贴进多行模式,导出 Excel 后就是一份可归档的原文与摘要对照表,用于数据迁移前后的抽查。
老校验文件的复核:早期的资源站、内部分发包偶尔仍带 MD4 校验串,用文件模式算一遍即可确认下载有没有中途损坏。
接老系统的签名:一些十几年前的接口用「盐值 + 参数 + MD4」拼签名,本地把盐值和拼接顺序摆好,逐行试几遍,比反复发请求试错快得多。
写单元测试的基准值:为 Java、Go、Python、C# 里的 MD4 实现准备预期值,用页面里的示例先算好,写进断言,跨语言结果不一致时可以逐段定位。
批量生成对照表:把一列编号或名称贴进多行模式,导出 Excel 后就是一份可归档的原文与摘要对照表,用于数据迁移前后的抽查。
老校验文件的复核:早期的资源站、内部分发包偶尔仍带 MD4 校验串,用文件模式算一遍即可确认下载有没有中途损坏。
常见问题
Q1. MD4 和 MD5 到底差在哪,摘要能互换吗?
不能互换。两者都输出 128 位摘要,但内部轮数和运算设计不同:MD4 只有三轮,MD5 加到四轮并给每步配了不同常量。同一段文本,MD4 与 MD5 的结果毫无关系,所以拿 MD5 工具去核对 MD4 校验串一定对不上。
Q2. 摘要能还原成原文吗?
算法本身是单向压缩,不存在解密过程。所谓「MD4 解密」实际是拿海量常见明文预先算好摘要建库反查,只对弱口令、短字符串奏效。真正的风险在于 MD4 抗碰撞能力已彻底失效——伪造出另一段内容让摘要相同并不困难,这也是它不能再用于安全场合的原因。
Q3. 16 位摘要是另一种算法吗?
不是。完整摘要固定 32 个十六进制字符,16 位是从中截取第 9 到第 24 个字符的习惯做法,早年为了省存储空间而流行。截断会让碰撞概率大幅上升,只适合长度受限的老字段,新场景请用完整的 32 位。
Q4. 为什么同一句中文,别的工具算出的值和这里不同?
九成是编码口径不同。哈希算的是字节,不是字符:中文按 UTF-8 通常一字三节,按 UTF-16LE 是两节,按 GBK 又是另一套字节。把编码切成对方使用的那一种再算即可;另外也要留意对方是否在明文里带了末尾换行或不可见空格。
Q5. NTLM 那一行是怎么算的?
按 Windows 的口径,把口令原文按 UTF-16LE 转成字节,再做一次标准 MD4,输出的 32 位小写就是 NTLM 哈希。为避免与其他设置混淆,这一行固定忽略左侧的盐值与迭代轮数。可以用 password 自测,结果应为 8846f7eaee8fb117ad06bdd830b7586c。
Q6. 多行模式一次能算多少条?
单次最多处理 5000 行,超出部分会被截断并给出提示。MD4 运算极快,几千行通常在一瞬间完成;行内的制表符会在导出时被替换成空格,避免打乱表格列。
Q7. 大文件会不会把浏览器卡死?
不会。文件被切成 2MB 的片段依次读取并增量更新摘要状态,内存里始终只留一小块数据,进度条会实时显示读取比例。几 GB 的镜像文件也能算完,耗时主要取决于磁盘读取速度。
Q8. 输入的口令和文件会被上传吗?
不会。页面加载后运算全部由本机浏览器完成,既不提交表单也不发起接口请求,服务器日志里不会出现任何明文、摘要或文件名。关闭标签页,输入框与结果即刻消失。
