
我有一個在 web 應用程式中使用的字串,透過 md5 哈希來得出哈希值。我也有哈希。但字串的 md5 與雜湊值不匹配,所以我猜測其中涉及鹽。有沒有什麼軟體可以幫助我確定鹽分?
答案1
在標準雜湊函數中(例如,/etc/shadow 中的 UNIX 密碼),salt 被儲存為雜湊的一部分。
將儲存的雜湊值作為鹽傳遞,您應該得到正確的結果。
/etc/shadow 中的雜湊密碼值實際上是一個以 $ 分隔的記錄。例如,我們有密碼“blarg”的哈希值:
$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0
由 $ 分隔的三個欄位分別是
- 哈希函數(在本例中為“1”,代表 MD5)
- 鹽(即“KfcI/JTQ”)
- 雜湊值(即“b5VTf4i9Mnf6QFgLuVZNM0”)
如果多次使用 mkpasswd,則雜湊值將會改變。
$ mkpasswd -m md5 blarg
$1$Gst52IWk$8ARVeSlpkcZOlyKV10Slu/
$ mkpasswd -m md5 blarg
$1$JeqRviA/$GnH/AvGnZEG9wLfJjiaAt1
但是,透過傳入上面哈希值中的鹽(即第二個字段),我們可以將其與原始哈希進行匹配:
$ mkpasswd -m md5 -S KfcI/JTQ blarg
$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0
您也可以傳入整個密碼雜湊(儘管省略雜湊函數)。
$ mkpasswd -m md5 -S KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0 blarg
$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0
在 Linux 上,哈希類型可以在 /etc/login.defs 中控制。更改此設定時要非常小心,您可能會將自己完全鎖定在系統之外。我建議仔細閱讀手冊頁,特別是查看標題 MD5_CRYPT_ENAB 和 ENCRYPT_METHOD。