3 回答

TA貢獻1877條經驗 獲得超6個贊
鹽只需要是隨機且唯一的。由于它對攻擊者無濟于事,因此可以自由地知道它。許多系統會在哈希密碼旁邊的列中的數據庫中存儲純文本鹽。
鹽有助于確保兩個人(用戶A和用戶B)碰巧共享同一密碼,這種情況并不明顯。如果沒有每個密碼的隨機唯一鹽,則哈希值將相同,并且顯然,如果用戶A的密碼被破解,則用戶B必須具有相同的密碼。
它還可以防止哈希字典可以與已知密碼匹配的攻擊。例如彩虹桌。
同樣,使用內置“工作因數”的算法也意味著隨著計算能力的提高,創建散列所必須經過的算法也可以增加。例如,bcrypt。這意味著暴力攻擊的經濟學變得難以為繼。據推測,創建已知哈希表將變得更加困難,因為它們需要花費更長的時間來創建?!肮ぷ饕蜃印钡淖兓瘜⒁馕吨仨毥⒏嗟谋怼?/p>

TA貢獻1854條經驗 獲得超8個贊
我認為您使問題復雜化了。
從問題開始:
您是否要保護弱密碼?
您是否要緩解彩虹攻擊?
您提出的機制確實可以防止彩虹攻擊,即使用戶A和用戶B具有相同的密碼,哈希密碼也將有所不同。確實,給密碼添加鹽過于復雜,這似乎是一種相當復雜的方法。
將數據庫遷移到另一臺服務器時會發生什么?
您是否可以更改每個數據庫的唯一值,如果可以,那么可以生成全局彩虹表,如果不能,則無法還原數據庫。
相反,我只需要添加額外的列并存儲適當的隨機鹽即可。這將防止任何形式的彩虹攻擊??缍鄠€部署。
但是,它不能保護您免受暴力攻擊。因此,如果您嘗試保護密碼不正確的用戶,則需要在其他地方查找。例如,如果您的用戶具有4個字母的密碼,即使使用鹽和最新的哈希算法,也可能在幾秒鐘內破解它。

TA貢獻1936條經驗 獲得超7個贊
我認為您需要問自己:“與僅生成隨機鹽值并將其存儲起來相比,使其變得更加復雜,您希望從中獲得什么?” 您使算法變得越復雜,就越有可能不經意地引入弱點。不管我怎么說,這聽起來都比較老套,但這很有幫助-您的應用程序有什么特別之處,以至于它需要一種新穎的密碼哈希算法?
添加回答
舉報