加密与编码识别

加密与编码识别指南

第一部分:加密算法

哈希算法(不可逆)

1. MD5

  • 特征:32位十六进制字符(128位)
  • 示例5d41402abc4b2a76b9719d911017c592
  • 可逆性:不可逆,可碰撞/彩虹表
  • 安全性:已破解,不推荐使用
  • 常见位置:旧系统密码存储、文件校验

2. SHA-1

  • 特征:40位十六进制字符(160位)
  • 示例aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
  • 可逆性:不可逆,已找到碰撞
  • 安全性:不安全
  • 常见位置:Git提交、旧SSL证书

3. SHA-256

  • 特征:64位十六进制字符(256位)
  • 示例2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
  • 可逆性:不可逆,目前安全
  • 安全性:安全
  • 常见位置:区块链、密码存储、数字签名

4. SHA-512

  • 特征:128位十六进制字符(512位)
  • 示例9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043
  • 可逆性:不可逆,目前安全
  • 安全性:安全
  • 常见位置:Linux密码、高安全性应用

5. bcrypt

  • 特征:以$2a$$2b$$2y$开头,60字符
  • 示例$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
  • 可逆性:不可逆
  • 安全性:非常安全(自适应)
  • 常见位置:现代Web应用密码存储

6. NTLM Hash

  • 特征:32位十六进制字符
  • 示例8846f7eaee8fb117ad06bdd830b7586c
  • 可逆性:不可逆,可彩虹表攻击
  • 安全性:较弱
  • 常见位置:Windows系统

7. LM Hash

  • 特征:32位十六进制,通常以AAD3B4开头
  • 示例aad3b435b51404eeaad3b435b51404ee
  • 可逆性:不可逆,极易破解
  • 安全性:非常弱
  • 常见位置:旧版Windows系统

对称加密算法(可逆,需要密钥)

1. AES

  • 特征:密文看起来像随机数据,Base64编码
  • 示例U2FsdGVkX1+WvJ6VYwRL9VhX82Vk8L/pVD5TwuRtkVM=
  • 模式识别:CBC模式通常有IV,ECB模式无IV
  • 可逆性:可逆,需要密钥
  • 常见位置:文件加密、数据库加密、HTTPS

2. DES/3DES

  • 特征:块大小为8字节,Base64编码
  • 示例k3bJqO6mR1A= (DES)
  • 可逆性:可逆,需要密钥
  • 安全性:DES已破解,3DES逐渐淘汰
  • 常见位置:旧系统、金融系统

3. RC4

  • 特征:流加密,无固定块大小
  • 示例:随机字节流
  • 可逆性:可逆,需要密钥
  • 安全性:已破解
  • 常见位置:旧版SSL/TLS、WEP

非对称加密算法(可逆,需要公钥/私钥)

1. RSA

  • 特征:密钥以-----BEGIN RSA PRIVATE KEY-----格式
  • 示例:长Base64字符串
  • 可逆性:可逆,需要私钥
  • 常见位置:SSL证书、SSH密钥、数字签名

2. ECC(椭圆曲线加密)

  • 特征:密钥较短,以-----BEGIN EC PRIVATE KEY-----格式
  • 示例:较短的Base64字符串
  • 可逆性:可逆,需要私钥
  • 常见位置:现代SSL证书、加密货币

特殊加密格式

1. JWT(JSON Web Token)

  • 特征:三部分用点分隔,每部分Base64Url编码
  • 示例eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
  • 可逆性:头部和载荷可解码,签名需要密钥验证
  • 常见位置:Web API认证

2. OpenSSL加密数据

  • 特征:以Salted__开头,Base64编码
  • 示例U2FsdGVkX1+...
  • 可逆性:可逆,需要密码
  • 常见位置:OpenSSL加密文件

第二部分:常见编码

1. Base64编码

  • 特征:A-Z, a-z, 0-9, +, /, =(填充)
  • 示例SGVsbG8gV29ybGQ=
  • 识别技巧:长度是4的倍数,常以=或==结尾
  • 常见位置:邮件附件、HTTP认证、图片数据

2. Base32编码

  • 特征:A-Z, 2-7, =(填充),不区分大小写
  • 示例JBSWY3DP
  • 识别技巧:只有大写字母和数字2-7
  • 常见位置:DNSSEC、双因素认证

3. Base16(Hex)编码

  • 特征:0-9, A-F(或a-f)
  • 示例48656c6c6f
  • 识别技巧:纯十六进制字符,长度通常为偶数
  • 常见位置:颜色代码、内存地址、网络数据包

4. URL编码

  • 特征:%后跟两个十六进制数字
  • 示例%48%65%6c%6c%6fHello%20World
  • 识别技巧:包含大量%符号
  • 常见位置:URL参数、表单数据

5. HTML实体编码

  • 特征&实体名;&#实体编号;
  • 示例<script><script>
  • 识别技巧:以&开头;结尾
  • 常见位置:HTML页面、防XSS

6. Unicode编码

  • 特征\u后跟4个十六进制数字
  • 示例\u4f60\u597d(中文”你好”)
  • 识别技巧\u前缀
  • 常见位置:JavaScript、JSON、Java

7. UTF-8编码

  • 特征:多字节序列
  • 示例你好 = \xE4\xBD\xA0\xE5\xA5\xBD
  • 识别技巧:中文通常3字节,emoji通常4字节
  • 常见位置:所有现代文本处理

8. 双重URL编码

  • 特征:对%符号再次编码
  • 示例%2548%2565%256c%256c%256f
  • 识别技巧:包含%25(%的URL编码)
  • 常见位置:WAF绕过、安全测试

9. URL路径编码

  • 特征:路径中的特殊字符编码
  • 示例/path/%2E%2E%2F%2E%2E%2Fetc%2Fpasswd
  • 识别技巧:路径中包含%编码
  • 常见位置:路径遍历攻击

10. ROT13编码

  • 特征:字母移位13位,只影响字母
  • 示例uryyb(hello)
  • 识别技巧:字母被替换,数字符号不变
  • 常见位置:论坛剧透、简单混淆

11. ASCII编码

  • 特征:十进制或十六进制表示
  • 示例72 101 108 108 1110x48 0x65 0x6c 0x6c 0x6f
  • 识别技巧:数字表示字符
  • 常见位置:低级编程、调试

12. MIME编码

  • 特征=?charset?encoding?encoded text?=
  • 示例=?utf-8?B?SGVsbG8gV29ybGQ=?=
  • 识别技巧:以=?开头?=结尾
  • 常见位置:电子邮件头

13. Uuencode

  • 特征:以begin开头,end结尾,每行以字符数开头
  • 示例
begin 644 file.txt
,3&%L(&=O<FQD"@``
`
end
  • 识别技巧:明显的begin/end标记
  • 常见位置:旧式邮件附件

14. XXencode

  • 特征:类似Base64,但使用不同字符集
  • 示例CJjPM0pM+JjP
  • 识别技巧:使用+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
  • 常见位置:旧系统文件传输

15. Quoted-Printable

  • 特征:非ASCII字符以=后跟两个十六进制数字表示
  • 示例=48=65=6C=6C=6F
  • 识别技巧:包含大量=符号
  • 常见位置:电子邮件

渗透测试实用技巧

快速识别流程

# 检查常见编码类型
echo "encoded_string" | base64 -d 2>/dev/null
echo "encoded_string" | base32 -d 2>/dev/null
echo "encoded_string" | xxd -r -p 2>/dev/null

# URL解码
echo "encoded_string" | sed 's/%/\\x/g' | xargs -0 printf

# 哈希识别
hashid "hash_string"

在线工具推荐

重要安全提示

  1. 永远不要在未知网站解密敏感数据
  2. 使用本地工具或可信的在线工具
  3. 注意法律和授权范围
  4. 加密数据需要密钥,不要尝试暴力破解生产系统