你已经得到了一个哈希值。它是一长串十六进制字符,或者可能有一个奇怪的前缀,例如 $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工具

当仅靠长度无法解决时,你需要:

  1. 检查源系统(操作系统、应用框架、数据库)
  2. 尝试破解已知值以确认算法
  3. 使用测试多种算法的哈希标识符工具

使用哈希标识符工具

不要手动计算字符数,而是使用我们的 哈希标识符 — 粘贴任何哈希值,它将:

  • 将长度和字符集与所有已知算法进行匹配
  • 突出显示最有可能的候选人
  • 自动标记前缀格式(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: