我一直在阅读LANMAN (LM) 哈希,我对算法的特定部分感到好奇。
LM 哈希计算如下:
- 用户的 ASCII 密码被转换为大写。
- 此密码被空填充到 14 个字节。
- 14 字节的密码被分成两个 7 字节的两半。
- 这些值用于创建两个 DES 密钥,每一个 7 字节一半。
- 这两个密钥中的每一个都用于对常量 ASCII 字符串"KGS!@#$%"进行 DES 加密,从而产生两个 8 字节的密文值。
- 这两个密文值连接起来形成一个 16 字节的值,即 LM 哈希。
链接的 Wikipedia 文章中概述了许多安全漏洞,并在其他地方进行了讨论,但我对第 3 步到第 6 步特别感兴趣。我很好奇是什么导致了这种设计。拆分密码,分别加密两半,然后将两半组合起来再次形成一个散列,有什么真正的安全优势吗?或者这只是“通过默默无闻的安全”的一个例子?