用已知的明文和哈希計算鹽?

用已知的明文和哈希計算鹽?

我有一個在 web 應用程式中使用的字串,透過 md5 哈希來得出哈希值。我也有哈希。但字串的 md5 與雜湊值不匹配,所以我猜測其中涉及鹽。有沒有什麼軟體可以幫助我確定鹽分?

答案1

在標準雜湊函數中(例如,/etc/shadow 中的 UNIX 密碼),salt 被儲存為雜湊的一部分。

將儲存的雜湊值作為鹽傳遞,您應該得到正確的結果。

/etc/shadow 中的雜湊密碼值實際上是一個以 $ 分隔的記錄。例如,我們有密碼“blarg”的哈希值:

$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0

由 $ 分隔的三個欄位分別是

  1. 哈希函數(在本例中為“1”,代表 MD5)
  2. 鹽(即“KfcI/JTQ”)
  3. 雜湊值(即“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。

相關內容