Add files via upload

This commit is contained in:
雾島风起時
2025-09-25 03:56:33 +08:00
committed by GitHub
parent 88fa0c589d
commit d3799b9ab3
27 changed files with 1049 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
### LM Hash 加密算法过程
LM Hash 的整个加密过程可以分解为以下几个步骤:
1. **密码转换:**
- 首先,用户的**明文密码**会被转换为大写字母。这是 LM Hash 最大的安全漏洞之一,因为它会直接忽略密码中所有的大小写信息,大大降低了密码的复杂度。例如,“Password123”和“password123”在经过这一步处理后,都变成了“PASSWORD123”
- 处理后的密码字符串,其长度**不能超过 14 个字符**。如果密码长度大于 14,则只取前 14 个字符
2. **密码填充与拆分:**
- 在将密码用于下一步加密之前,需要对它进行填充。如果处理后的密码长度小于 14 个字符,则会在其末尾使用**空字符(`\x00`)**进行填充,使其总长度达到 14 个字节
- 填充后的 14 字节密码会被拆分为两个**7 字节**的字符串
3. **密钥生成:**
- 接下来,这两个 7 字节的字符串会被分别转换为两个 DESData Encryption Standard)密钥
- 转换过程是这样的:每个 7 字节的字符串会被扩展为一个 8 字节的密钥,其中原始 7 个字节的每个字节的低 7 位用于组成密钥的 56 位有效密钥,剩下的 16 位则作为奇偶校验位
4. **DES 加密:**
- 这两个 56 位的 DES 密钥会分别用来加密一个固定的字符串,这个字符串是**“KGS!@#$%”**。
- DES 算法会以**ECBElectronic Codebook)模式**对这个字符串进行加密
5. **结果拼接:**
- 最后,将两个 DES 加密后得到的 8 字节结果**拼接**起来,就得到了一个 16 字节(32 个十六进制字符)的 LM Hash
**LM Hash 的弱点**
通过上述步骤可以看出,LM Hash 的设计存在多个严重的安全缺陷,这也是为什么它早已被淘汰的原因:
- **不区分大小写:** 这使得攻击者可以忽略大小写进行暴力破解,显著降低了密码空间的复杂度
- **固定填充和拆分:** 无论密码长度如何,最终都是两个 7 字节的字符串。这意味着任何长度小于 8 个字符的密码,其第二个 7 字节的字符串都是相同的(全部由空字符填充)。攻击者只需破解前半部分,就可以得到密码
- **使用弱算法 DES** DES 算法本身已经很脆弱,并且这里的加密是针对一个固定的、公开的字符串“KGS!@#$%”,这为攻击者提供了巨大的便利,因为他们可以预先计算出所有可能的哈希值,然后进行**彩虹表攻击(Rainbow Table Attack**