你已經得到了一個雜湊值。它是一長串十六進位制字元,或者可能有一個奇怪的字首,例如 $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: