我們都知道我們應該採用一種相當慢的哈希算法,對密碼加鹽,然後對許多迭代運行哈希。假設我遵守了除一條規則之外的幾乎所有內容,並且我有一個靜態鹽。像這樣的東西:
password ='yaypuppies'+ some_static_salt1000.times do password = amazing_hash(password)end
現在是 password 代碼>是一件很棒的雜亂無章的事情。
但是如果我們進行更多次迭代會怎樣?
3000000000000000000.times do#3 quintillion password = amazing_hash(password)end
從理論上講,許多密碼會發生衝突嗎?即會出現這種情況?
PASS1 -> lkajsdlkajslkjda > 23oiuolekeq > N,mznxc,mnzxc > common_thing > 987123oijd > liasjdlkajsd > 09893oiehd > 09uasodijpass2 -> loiuoklncas > 9830984cjlas > ioasjdknckauyieuh > common_thing > 987123oijd > liasjdlkajsd > 09893oiehd > 09uasodij
並且兩個密碼最終都散列為 09uasodij
?
使用非隨機化的每次輸入密碼的鹽,每次添加迭代都會增加碰撞的可能性?