這看起來像一個安全的鹽與密碼一起使用嗎?任何改進或建議或明顯的缺陷?這看起來像是一個密碼的強鹽
$salt = '';
for ($i = 0; $i < 50; $i++) {
$salt .= chr(rand(33, 126));
}
這看起來像一個安全的鹽與密碼一起使用嗎?任何改進或建議或明顯的缺陷?這看起來像是一個密碼的強鹽
$salt = '';
for ($i = 0; $i < 50; $i++) {
$salt .= chr(rand(33, 126));
}
您不需要使鹽時間很長,並且加密安全並不重要。鹽的重點在於簡化彩虹表攻擊,因爲密碼和哈希之間不再有1對1的映射關係。 (他們也跟上目光流連管理員從數據庫中看到482c811da5d5b4bc6d497ffa98491e38然後知道喬的密碼是「password123」。)
即使是一個4字節的鹽就綽綽有餘了,你現在就得2 &約;任何密碼都有40億個潛在的哈希值。
我會用mt_rand
因爲它更快,但這是絕對鹽足夠。
我不認爲rand
是一個很好的PRNG。如果我記得正確的話,它直接映射到c PRNG,在許多實現中它有一個可怕的小(如32位)內部狀態。
它也不是很好的種子。但是由於鹽的最重要的作用是防止預先計算的彩虹表,這個代碼所做的就應該足夠了。
我通常分割我的兩個部分鹽:
這樣一個攻擊者只能訪問數據庫而不能訪問配置文件(如果攻擊使用SQL注入,很可能出現這種情況),他仍然無法破解密碼。
長度是主要使鹽安全。隨機性並不是非常重要,只要它對每個用戶都不同。反正你最終會以純文本的方式存儲它,所以你可以在散列時使用它。
你必須知道鹽!這不僅僅是單向哈希,它是一次哈希!這是沒用的。 – aliqandil 2014-04-03 03:27:11