簡體   English   中英

使用用戶密碼的哈希版本進行鹽腌是否與使用預定義字符串進行鹽腌一樣安全?

[英]Is salting with a hashed version of the user's password just as secure as salting with a pre-defined string?

基本上,我要問的是,通過將密碼的哈希版本附加到密碼末尾來添加密碼是否與使用其他字符串添加密碼一樣安全。 所以:

這是:

$pass = "pass";
$salt = sha1(md5($pass));
$pass = md5($pass.$salt);

像這樣安全嗎?

$pass = "pass";
$salt = "4D9ds*^dkrUI45^#dkd*3fD8&!dlvd*";
$pass = md5($pass.$salt);

如果鹽基於要散列的值,則您將丟失鹽的值。

例如,如果密碼哈希鹽僅基於密碼的值,則使用同一密碼的兩個用戶在數據庫中非常明顯。

您應該改為在其他可確定的值上添加鹽。 常用選項包括用戶名,電子郵件等字段。

第一個示例與完全不使用任何鹽的哈希一樣安全,因為它仍然只需要密碼,無需其他任何破解。 換句話說,您只是將哈希函數多次應用於同一事物。

更好的選擇仍然是為每個用戶創建一個鹽,並將其分別存儲。 我猜每個人都可以使用固定鹽,因為您不能使用密碼來確定鹽。 但是,為每個用戶生成唯一的鹽甚至更好,因為這樣不僅需要破解密碼,還需要更多信息(例如用戶名,注冊日期或其他一些信息)。

無論如何,您都不應該使用md5,因為它已經被破解了。 sha256更安全且易於實施。 存儲數據時如何使用:

$salt = mt_rand();
$pass = hash('sha256',$_POST['userPassword'] . $salt);

因此,$ salt不是基於任何用戶輸入的數據,而是基於隨機數據。 然后,您將$ salt照原樣存儲在db中,或者反轉字符串進行混淆。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM