雜湊識別工具

貼上一個雜湊值,即可檢視可能生成它的演算法,並按可能性排序。支援十六進位和 Base64 摘要以及多種密碼雜湊格式,還可以用你自己的文字驗證猜測。

完全在瀏覽器中執行,不會上傳任何資料。

使用方法

  1. 貼上一個雜湊值。請去掉 0x、sha256=、sha384- 之類的標籤,但密碼雜湊要完整保留,包括開頭的 $、{ 或 *。
  2. 檢視結果:先是識別出的形式及其位數,然後是可能的演算法,並標出最可能的項。如果字串中包含 bcrypt 的成本因子,或 sha256crypt、sha512crypt、PBKDF2 的輪數,也會一併顯示。
  3. 對於 MD5、SHA-1、SHA-256、SHA-512、CRC-32 和 CRC-32C 候選項,點選「開啟工具」可以跳轉到對應的計算器。
  4. 如果你知道或猜到原始文字,把它輸入「用文字驗證」框,即可檢視哪種演算法能得到這個雜湊。

如何識別雜湊型別

每種雜湊演算法的輸出長度都是固定的,而十六進位每個位元組佔兩個字元,所以十六進位字串的長度是最重要的線索。工具還會檢查字元集,並查詢密碼雜湊格式寫在開頭的字首。

十六進位字元數位數常見演算法
832CRC-32、CRC-32C、Adler-32
32128MD5、NTLM、MD4
40160SHA-1、RIPEMD-160
56224SHA-224、SHA3-224
64256SHA-256、SHA3-256、BLAKE2s、Keccak-256
96384SHA-384、SHA3-384
128512SHA-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-1LDAP 目錄
* 加 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。
把密碼雜湊貼上到這裡安全嗎?

分析完全在你的瀏覽器中進行,雜湊不會被傳輸或儲存。不過,任何拿到真實系統密碼雜湊的人都可以離線嘗試猜測,因此請把這類雜湊視為敏感資訊,不要放進工單、聊天記錄或截圖中。