Hashsum

如何找到用於散列密碼的散列算法?

  • April 8, 2020

我有工作密碼並且可以看到雜湊 (/etc/passwd)。如何找到用於散列密碼的散列算法,而無需手動嘗試不同的算法,直到找到匹配項?

這在crypt(3)’s manpage中有記錄,您可以通過 shadow(5)’s manpagepasswd(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,也由前綴22b2x和標識2y(請參閱PassLib 的文件)。

所以如果一個雜湊密碼是以上述格式儲存的,你可以通過查看id找到使用的算法;否則它crypt是預設的 DES 算法(帶有 13 個字元的散列),或“big”crypt的 DES(擴展為支持 128 個字元的密碼,散列長度最多為 178 個字元),或 BSDI 擴展的 DES(帶有_前綴後跟一個 19 個字元的雜湊)。

一些發行版使用libxcrypt,它支持並記錄了更多的方法:

  • y: 是的加密
  • gy: gost-yescrypt
  • 7: 加密
  • sha1: sha1crypt
  • md5: 孫MD5

其他平台支持其他算法,因此請查看crypt那裡的聯機幫助頁。例如,OpenBSDcrypt(3)僅支持 Blowfish,它使用id “2b”來辨識。

引用自:https://unix.stackexchange.com/questions/430141