使用方法
- 貼上一個雜湊值。請去掉 0x、sha256=、sha384- 之類的標籤,但密碼雜湊要完整保留,包括開頭的 $、{ 或 *。
- 檢視結果:先是識別出的形式及其位數,然後是可能的演算法,並標出最可能的項。如果字串中包含 bcrypt 的成本因子,或 sha256crypt、sha512crypt、PBKDF2 的輪數,也會一併顯示。
- 對於 MD5、SHA-1、SHA-256、SHA-512、CRC-32 和 CRC-32C 候選項,點選「開啟工具」可以跳轉到對應的計算器。
- 如果你知道或猜到原始文字,把它輸入「用文字驗證」框,即可檢視哪種演算法能得到這個雜湊。
如何識別雜湊型別
每種雜湊演算法的輸出長度都是固定的,而十六進位每個位元組佔兩個字元,所以十六進位字串的長度是最重要的線索。工具還會檢查字元集,並查詢密碼雜湊格式寫在開頭的字首。
| 十六進位字元數 | 位數 | 常見演算法 |
|---|---|---|
| 8 | 32 | CRC-32、CRC-32C、Adler-32 |
| 32 | 128 | MD5、NTLM、MD4 |
| 40 | 160 | SHA-1、RIPEMD-160 |
| 56 | 224 | SHA-224、SHA3-224 |
| 64 | 256 | SHA-256、SHA3-256、BLAKE2s、Keccak-256 |
| 96 | 384 | SHA-384、SHA3-384 |
| 128 | 512 | SHA-512、SHA3-512、BLAKE2b、Whirlpool |
僅憑長度無法下定論,因為好的雜湊看起來就像隨機資料,其中並沒有標明演算法。一個 32 個字元的值可能是 MD5、MD4,也可能是 Windows 用於賬戶密碼的 NTLM(即 UTF-16LE 編碼密碼的 MD4)。因此工具會按常見程度為候選演算法排序:通常 MD5 排在最前;如果雜湊全部為大寫,則把 NTLM 排在最前,因為一些 Windows 密碼匯出工具以大寫形式輸出。同樣,以太坊使用的 Keccak-256 與標準化的 SHA3-256 只在填充方式上不同,輸出都是 64 個十六進位字元。
Base64 摘要與密碼雜湊格式
有些系統用 Base64 而不是十六進位書寫摘要:24 個字元對應 16 位元組(MD5,例如 Content-MD5 請求頭),28 個字元對應 SHA-1,44 個對應 SHA-256,64 個對應 SHA-384(例如子資源完整性 SRI 屬性),88 個對應 SHA-512。工具會把長度換算回字節數,並列出同樣的候選演算法。缺少填充或使用 URL 安全字元都沒有問題,但請先去掉 sha384- 之類的字首。
密碼雜湊格式是自描述的:開頭的字首標明演算法,鹽值和成本參數也寫在字串裡。現代格式都加了鹽,並且刻意設計得很慢;表格最後兩行的 LDAP 和 MySQL 格式則是快速的 SHA-1 構造,其中只有 {SSHA} 加了鹽。
| 開頭 | 格式 | 常見於 |
|---|---|---|
$2a$、$2b$、$2y$ | bcrypt,總長固定為 60 個字元;緊隨其後的兩位數字是成本因子,每加 1 計算量翻倍 | 各類 Web 框架、PHP 的 password_hash() |
$argon2id$ | Argon2id,帶有記憶體(m)、時間(t)和並行度(p)參數 | 現代應用,OWASP 推薦 |
$6$、$5$ | sha512crypt、sha256crypt,可帶 rounds= | Linux 的 /etc/shadow |
$y$ | yescrypt | 許多較新 Linux 發行版的 /etc/shadow |
$1$、$apr1$ | md5crypt、Apache MD5 | 較舊的 Unix 系統、.htpasswd |
pbkdf2_sha256$ | PBKDF2-SHA256,帶迭代次數 | Django |
{SHA}、{SSHA} | SHA-1、加鹽 SHA-1 | LDAP 目錄 |
* 加 40 個十六進位字元 | MySQL 4.1+ 的 PASSWORD() | MySQL 使用者表 |
識別不等於破解
雜湊是單向的。識別工具只分析字串的形態,無法揭示、解密或查詢原始輸入,也不會把任何內容傳送到伺服器或線上資料庫。想找到原始輸入,唯一的辦法是猜測候選值並逐個計算雜湊,hashcat、John the Ripper 等密碼恢復工具在確定演算法後做的就是這件事。bcrypt、Argon2 這類加鹽的慢速格式,正是為了讓這種猜測代價高昂。請只測試你有權處理的雜湊。
用文字驗證用來檢驗一個具體的猜測:它把你輸入的文字按 UTF-8 編碼,分別計算 MD5、SHA-1、SHA-256、SHA-384、SHA-512、CRC-32 和 CRC-32C,並告訴你哪一個與雜湊一致,無論雜湊是大小寫十六進位還是 Base64。它無法驗證加鹽的密碼雜湊或 HMAC,因為這些還取決於鹽值或金鑰;對於帶金鑰的值,請在 HMAC 生成器中填入金鑰計算。
常見問題
這個工具能告訴我原始文字或密碼嗎?
不能。它只能指出可能使用的演算法。雜湊函式無法逆向計算;網上所謂的「雜湊解密」只是在常用詞和洩露密碼的雜湊表中查詢,只對弱口令、未加鹽的輸入有效。
為什麼一個雜湊會列出好幾種演算法?
輸出長度相同的演算法會生成長度和字元集都相同的字串,雜湊本身並沒有記錄使用了哪種演算法。工具會根據各演算法的常見程度,把最可能的一項排在最前。要確認結果,只能用已知輸入重新計算雜湊。
32 個字元的十六進位字串一定是 MD5 嗎?
通常是,但並不總是。NTLM、MD4、MD2 和 RIPEMD-128 的長度都一樣,任何以十六進位書寫的 128 位值也是如此,例如去掉連字元的 UUID 或隨機權杖。要結合上下文判斷:Windows 密碼雜湊通常是 NTLM,檔案校驗值通常是 MD5。
為什麼「用文字驗證」提示不一致?
echo 會自動加上換行,可改用 echo -n 或 printf);空格或大小寫不同;原文是用 UTF-8 以外的編碼計算的;帶有鹽值或金鑰,例如密碼雜湊和 HMAC;或者所用演算法不在驗證範圍內,例如 SHA-3、BLAKE2 或 NTLM。把密碼雜湊貼上到這裡安全嗎?
分析完全在你的瀏覽器中進行,雜湊不會被傳輸或儲存。不過,任何拿到真實系統密碼雜湊的人都可以離線嘗試猜測,因此請把這類雜湊視為敏感資訊,不要放進工單、聊天記錄或截圖中。