哈希与安全

NTLM 哈希生成器

即时将密码转换为其 Windows NTLM 哈希。

给这个工具评分

如何使用 NTLM 哈希生成器

  1. 在输入框中键入或粘贴密码。
  2. NTLM 哈希会随输入实时显示。
  3. 点击“复制”获取这个 32 位字符的结果。

关于 NTLM 哈希生成器

NTLM 是 Windows 存储的密码哈希,它比大多数人想象的要简单:就是对以 UTF-16 小端编码的密码应用 MD4。这就是整个算法。输出为 32 个十六进制字符,按惯例以大写书写。如果你想单独查看这个底层原语本身,可以试试我们的 MD4 生成器——这里唯一的区别只是多了一步文本编码。

安全问题出在 NTLM没有做的事情上。它不加盐,而且速度极快。不加盐意味着两个用户使用相同密码会得到逐字节完全相同的哈希——所以数据泄露中出现重复哈希,会立即暴露出共用密码,而一张预先计算好的表可以同时攻击所有账户。速度快意味着现代 GPU 每秒可以尝试数十亿个候选值,因为 MD4 诞生于一个以速度为目标的年代。两者叠加,正是从域控制器中导出的 NTLM 哈希会被字典攻击迅速攻破的原因,也是微软一直在推动客户远离 NTLM 认证的重要原因之一。

计算 NTLM 哈希的正当理由很直接:经授权的渗透测试、审计自己的域、检查你负责的账户是否使用了出现在你自己拥有的字典中的密码,或者为支持 NTLM 协议的软件构建测试用例。如果你正在做审计并想找到更强的替代方案,bcryptArgon2 才是现代应用应该存储的类型。

常见问题

NTLM 哈希具体是什么?

对以 UTF-16 小端编码的密码计算 MD4,写成 32 个十六进制字符。没有盐,没有迭代,没有密钥拉伸——只是一次 MD4 运算。

为什么不加盐又速度快会这么危险?

不加盐意味着相同的密码会产生相同的哈希,所以一张预先计算好的表就能同时攻击所有账户,数据泄露中的重复项也会白白暴露共用密码。速度快意味着 GPU 每秒能测试数十亿次猜测。两者结合让破解变得非常廉价——这正是从域控制器导出的哈希会被如此迅速破解的原因,也是微软一直在引导客户远离 NTLM 的原因。

大写还是小写?

无论哪种写法,哈希值都是相同的——它本质上就是十六进制。惯例是使用大写,大多数 Windows 工具也是这样显示的。

我能把 NTLM 哈希还原回密码吗?

不能直接还原——哈希是单向的。哈希确实会被字典攻击和暴力破解攻破,因为 NTLM 速度快且不加盐,但那是猜测,不是还原。请只对你拥有或已获得授权测试的系统这样做。

我的密码会被存储吗?

不会。它会被发送到我们的服务器进行哈希计算,因为浏览器无法计算 MD4,计算完成后会立即丢弃——绝不记录,绝不存储。