我聽說鹽的唯一目的是爲了防止彩虹表攻擊,但它肯定有更多的價值超過這個?它不會防止基於字典的攻擊嗎?那麼蠻力,鹽會有什麼用處呢?你能解釋一下爲什麼嗎?哈希鹽有沒有其他用途比防止彩虹表攻擊?
其次,假設我有一個算法,採用microtime,一個128字符的鹽和一個10億到100億的隨機數,並將它們散列在一起。這是否會提供高度的安全性?因爲即使攻擊者知道其中的一個細節,在我看來,計算其餘部分在計算上仍然是不可行的。不是嗎?
感謝,
本
編輯:爲了澄清,攻擊者不能訪問到散列算法,因此他們無法垃圾郵件的信息系統。他們所有的就是散列,他們必須弄清楚它是如何編譯的。當然,即使他們知道哈希是如何產生的,試圖用長鹽對所有組合進行暴力破解會使它不切實際嗎?
此外,哈希不是用戶的密碼或用戶名,它只是用於身份驗證的一組隨機字符。所以鹽和隨機數不需要存儲,只是得到的散列。在這種情況下,上述系統會以類似於下面的代碼的形式出現,是一個很好的系統,可以防止攻擊者真實地猜測用戶的哈希值是什麼?
$salt = "some random characters I made up";
hash('sha256', microtime(true).$salt.mt_rand(1000,9999));
我知道這只是1000-9999而不是上面提到的數十億。
再次感謝。
下次登錄時,系統如何知道創建密碼時的microtime?如果您沒有存儲該文件,則無法驗證登錄。如果你確實存儲了它,那麼它只是鹽的一部分,並且無論如何你都會將鹽粘在數據庫中。 – 2011-07-07 16:23:08