Hashsum
如何找到用於散列密碼的散列算法?
我有工作密碼並且可以看到雜湊 (/etc/passwd)。如何找到用於散列密碼的散列算法,而無需手動嘗試不同的算法,直到找到匹配項?
這在
crypt(3)
’s manpage中有記錄,您可以通過shadow(5)
’s manpage或passwd(5)
’s . 這些連結適用於現代基於 Linux 的系統;那裡的描述是:如果salt是以字元 “$ id開頭的字元串 $ " followed by a string optionally terminated by " $ “,則結果為:
$id$salt$encrypted
id標識使用的加密方法而不是 DES,然後確定如何解釋密碼字元串的其餘部分。支持以下 id 值:
ID | Method ───────────────────────────────────────────────────────── 1 | MD5 2a | Blowfish (not in mainline glibc; added in some | Linux distributions) 5 | SHA-256 (since glibc 2.7) 6 | SHA-512 (since glibc 2.7)
Blowfish,也稱為
bcrypt
,也由前綴2
、2b
、2x
和標識2y
(請參閱PassLib 的文件)。所以如果一個雜湊密碼是以上述格式儲存的,你可以通過查看id找到使用的算法;否則它
crypt
是預設的 DES 算法(帶有 13 個字元的散列),或“big”crypt
的 DES(擴展為支持 128 個字元的密碼,散列長度最多為 178 個字元),或 BSDI 擴展的 DES(帶有_
前綴後跟一個 19 個字元的雜湊)。一些發行版使用libxcrypt,它支持並記錄了更多的方法:
y
: 是的加密gy
: gost-yescrypt7
: 加密sha1
: sha1cryptmd5
: 孫MD5其他平台支持其他算法,因此請查看
crypt
那裡的聯機幫助頁。例如,OpenBSDcrypt(3)
僅支持 Blowfish,它使用id “2b”來辨識。