你已经得到了一个哈希值。它是一长串十六进制字符,或者可能有一个奇怪的前缀,例如 $2b$。您需要知道是什么算法创建了它——用于 CTF 挑战、安全审计、密码恢复,或者只是出于好奇。
这是通过长度、字符集和格式识别任何哈希类型的权威指南。
什么是哈希?
哈希是由单向数学函数生成的固定长度字符串。将任何输入(密码、文件、消息)输入哈希算法,您就会获得固定大小的唯一指纹。相同的输入总是产生相同的输出,但您无法反转该过程来恢复原始输入。
哈希函数无处不在:在数据库中存储密码、验证文件完整性、数字签名和重复数据删除。
如何识别哈希:快速方法
识别哈希的最快方法是通过它 字符数 和 字符集。大多数哈希值由十六进制字符(0–9、a–f)组成,但 bcrypt 和 SHA-512 crypt 等某些算法使用更广泛的 Base64 字母表。
步骤一: 数一下字符数。 步骤 2: 注意字符集(仅限十六进制,或字母数字+特殊)。 步骤 3: 检查前缀(bcrypt 以 $2b$, SHA-512 密码开头 $6$).
或者只是使用我们的 哈希标识符工具 自动识别。
哈希识别参考表
| 哈希类型 | 长度 | 字符集 | 前缀/注释 |
|---|---|---|---|
| MD5 | 32 | 十六进制(0-9,a-f) | 无前缀 |
| SHA-1 | 40 | 十六进制 | 无前缀 |
| SHA-224 | 56 | 十六进制 | 无前缀 |
| SHA-256 | 64 | 十六进制 | 无前缀 |
| SHA-384 | 96 | 十六进制 | 无前缀 |
| SHA-512 | 128 | 十六进制 | 无前缀 |
| SHA3-256 | 64 | 十六进制 | 与 SHA-256 的长度无法区分 |
| SHA3-512 | 128 | 十六进制 | 与 SHA-512 的长度无法区分 |
| NTLM | 32 | 十六进制 | 与 MD5 长度相同 — 上下文很重要 |
| MySQL 4.1+ | 40 | 十六进制 | 有时带有前缀 * |
| bcrypt | 60 | Base64 字母表 | 开头为 $2a$, $2b$, 或 $2y$ |
| SHA-512 地穴 | 106 | Base64 字母表 | 开头为 $6$ |
| SHA-256 地穴 | 63 | Base64 字母表 | 开头为 $5$ |
| MD5 地穴 | 34 | Base64 字母表 | 开头为 $1$ |
| 氩气2 | 可变 | Base64 + $ |
开头为 $argon2id$ 或 $argon2i$ |
| 加密 | 可变 | Base64 + $ |
开头为 $s0$ |
| PBKDF2 | 可变 | Base64 或十六进制 | 通常带有前缀 pbkdf2_sha256$ |
| LM 哈希 | 32 | 十六进制 | Windows 旧版 — 两个 16 字符的半部分 |
| CRC32 | 8 | 十六进制 | 非常短 — 4 字节 |
| 漩涡 | 128 | 十六进制 | 不太常见 |
| RIPEMD-160 | 40 | 十六进制 | 与 SHA-1 长度相同 |
| 阿德勒-32 | 8 | 十六进制 | 校验和,不是加密哈希 |
识别最常见的哈希值
MD5(32 个十六进制字符)
5f4dcc3b5aa765d61d8327deb882cf99
MD5 是您会遇到的最常见的哈希值。 32 个小写十六进制字符,无前缀。它被广泛用于密码存储,但现在被认为在密码学上已被破坏——它的计算速度很快,这使得暴力攻击变得微不足道。
常见于: 旧版 Web 应用程序、文件校验和、CTF 挑战、数据库密码转储。
限制: MD5 和 NTLM 都是 32 个十六进制字符。如果您在 Windows 系统中找到 32 个字符的哈希值,它可能是 NTLM。从网络应用程序来看,它可能是 MD5。
SHA-1(40 个十六进制字符)
5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
40 hex characters.自 2017 年以来,大多数安全用途已弃用,但在较旧的系统、Git 提交、SSL 证书(旧版)和文件校验和中仍然常见。
常见于: Git 对象 ID、旧版 SSL 证书、文件验证工具。
SHA-256(64 个十六进制字符)
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
大多数应用的当前标准。 64 个十六进制字符。用于比特币(双 SHA-256)、JWT 签名、现代密码存储包装和 TLS。
常见于: 区块链、API 签名、密码存储(通常封装在 PBKDF2 或 HMAC 中)、文件完整性验证。
SHA-512(128 个十六进制字符)
b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86
128 个十六进制字符。比 SHA-256 更强但更慢。在一些 Linux 密码散列中使用(/etc/shadow)和高安全性应用。
bcrypt(60 个字符,类似 Base64)
$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW
由于其结构化前缀而成为最容易识别的哈希格式:
$2b$(或$2a$,$2y$) — 算法版本12— 成本因子(工作因子),多少轮- 之后的所有内容 — 53 个字符的盐 + 哈希组合
bcrypt 故意慢。您无法使用 GPU 来加速它 - 这就是为什么它是密码散列的正确选择。如果您看到以以下字符开头的 60 个字符的字符串 $2,是bcrypt。
常见于: PHP 应用程序 (password_hash()),Ruby on Rails,最现代的 Web 框架。
NTLM(32 个十六进制字符)
b4b9b02e6f09a9bd760f388b67351e2b
视觉上与 MD5 相同 — 32 个小写十六进制字符。 NTLM 是 Windows 的旧身份验证哈希。如果你正在做CTF或者渗透测试Windows系统,这些会经常出现。
如何区分MD5和NTLM: 上下文。 NTLM 来自 Windows SAM 数据库、Active Directory 或 Mimikatz 等工具。 MD5 通常来自 Web 应用程序数据库。
Argon2(可变长度,结构化前缀)
$argon2id$v=19$m=65536,t=3,p=4$c29tZXNhbHQ$RdescudvJCsgt3ub+b+dWRWJTmaaJObG
2015 年密码哈希竞赛获胜者。设计为内存硬型,使其能够抵抗基于 GPU 和 ASIC 的攻击。现代框架(Django 4+、PHP 8.1+ 原生)正在采用 Argon2id。
前缀细分: $argon2id$ = 变体, v=19 = 版本, m=65536 = 内存成本, t=3 = 时间成本, p=4 = 并行性。
当长度不够时如何识别哈希
一些哈希具有相同的长度和字符集:
| 碰撞 | 如何辨别 |
|---|---|
| MD5 与 NTLM(32 十六进制) | 源上下文 — Windows = NTLM,Web DB = MD5 |
| SHA-1 与 RIPEMD-160(40 十六进制) | RIPEMD-160 更为罕见; SHA-1 是安全的猜测 |
| SHA-256 与 SHA3-256(64 十六进制) | 需要算法元数据或工具 |
| SHA-512 vs SHA3-512 vs Whirlpool(128 十六进制) | 需要上下文或哈希ID工具 |
当仅靠长度无法解决时,你需要:
- 检查源系统(操作系统、应用框架、数据库)
- 尝试破解已知值以确认算法
- 使用测试多种算法的哈希标识符工具
使用哈希标识符工具
不要手动计算字符数,而是使用我们的 哈希标识符 — 粘贴任何哈希值,它将:
- 将长度和字符集与所有已知算法进行匹配
- 突出显示最有可能的候选人
- 自动标记前缀格式(bcrypt、SHA-crypt、Argon2)
这对于遇到不熟悉的哈希格式或需要快速处理多个哈希的 CTF 挑战特别有用。
Real-World Scenarios
场景 1:您有一个数据库转储
你找到一个 users 表,其中包含 password 包含以 开头的 60 个字符的字符串的列 $2b$。这些是 bcrypt 哈希值。现代且正确实施——破解它们的计算成本很高。
场景 2:CTF 挑战 — 你找到一个哈希文件
098f6bcd4621d373cade4e832627b4f6
32 个十六进制字符 → MD5。字符串 test 哈希为 MD5 中的该值。使用 hashcat 或 john 进行快速单词列表攻击将立即破解常见密码。
hashcat -m 0 -a 0 hash.txt wordlist.txt
模式 -m 0 是MD5。如果是 SHA-1,请使用 -m 100。 SHA-256 是 -m 1400.
场景三:Linux /etc/shadow
$6$rounds=5000$usesomesalt$IxDD3jerizQ5s/bS3FbSsO6hMGFjfSKNBWENHyJ7FXKC4XiuT3pOlLGEBpRiuJ3QGJlyXfS4uNIaVpqEcF2b.
开头为 $6$ → SHA-512 密码。格式为: $id$salt$hash 其中 id=6 表示 SHA-512。
| ID | 算法 |
|---|---|
$1$ |
MD5 密码 |
$5$ |
SHA-256 加密 |
$6$ |
SHA-512 加密 |
$y$ |
是的加密货币 |
$2b$ |
bcrypt |
Hashcat 模式参考
如果您正在破解哈希(在您有权测试的系统上),以下是最常见类型的 hashcat 模式:
| 哈希类型 | 哈希猫模式 |
|---|---|
| MD5 | 0 |
| SHA-1 | 100 |
| SHA-256 | 1400 |
| SHA-512 | 1700 |
| NTLM | 1000 |
| bcrypt | 3200 |
| SHA-512 地穴(6 美元) | 1800 |
| MySQL 4.1+ | 300 |
| WPA/WPA2 | 2500 |
快速识别备忘单
- 8 个字符,十六进制 → CRC32 或 Adler-32(校验和,非加密)
- 32 个字符,十六进制 → MD5 或 NTLM
- 40 个字符,十六进制 → SHA-1 or RIPEMD-160
- 56 个字符,十六进制 → SHA-224
- 64 个字符,十六进制 → SHA-256 或 SHA3-256
- 96 个字符,十六进制 → SHA-384
- 128 个字符,十六进制 → SHA-512、SHA3-512 或 Whirlpool
- 60 个字符,以
$2→ bcrypt - 开头为
$1$→ MD5 地穴 - 开头为
$5$→ SHA-256 crypt - 开头为
$6$→ SHA-512 密码 - 开头为
$argon2→ 氩2 - 开头为
pbkdf2_→ PBKDF2
立即识别您的哈希值
使用我们的免费 哈希标识符工具 — 粘贴任何哈希并通过置信度分数和可能的算法获得即时识别。
Related tools and guides: