爲數據庫中的每個密碼(例如SHA-1和MD5)存儲兩個散列並檢查登錄腳本中的兩個散列以防止衝突是一個好主意嗎?另一方面,從兩個哈希計算密碼(例如,如果黑客可以訪問數據庫),是不是更容易?爲數據庫中的每個密碼存儲兩個哈希是一個好主意嗎?
-2
A
回答
1
這可能沒有用。
任何你使用的散列函數都可以避免意外碰撞 - 它們幾乎不可能。所以你關心的唯一衝突是黑客已經損害了你的數據庫,並且擁有你的哈希值,試圖找出生成目標哈希的密碼。
這被稱爲「第二原像攻擊」,它非常困難。對於任何相對較新的算法,都沒有已知的第二次原像攻擊,即使是回到MD4。這不應該是一個嚴重的問題。
但是,如果您使用的是通用哈希函數,那麼人們強制您的黑客哈希是現實的問題。 您不應該使用SHA-2等通用哈希函數,即使使用鹽類。你應該使用密碼哈希函數,比如bcrypt,它可以抵抗暴力破壞。如果你正在使用正常的散列函數,那麼,正如你注意到的那樣,存儲兩個意味着他們只需要強悍弱者 - 這又是一件可能出錯的事情。
不要打擾。改爲使用密碼哈希函數。這會更安全和簡單。
0
我真的不知道如何從密碼存儲2次哈希值然後檢查兩者中獲得任何好處。所有你在這裏做的是給你的應用程序做更多的工作,在我看來不提供任何額外的安全級別,因爲他們仍然輸入相同的密碼。
+0
它會阻止這種攻擊[破碎的SHA1](https://shattered.io/),因爲md5會仍然無法匹配。 – KauriNZ
相關問題
- 1. 使用MQ將數據存儲在數據庫中是一個好主意嗎?
- 2. 解密存儲在哈希碼數據庫中的密碼
- 3. 生成並存儲一個隨機數作爲我班的哈希值是否是一個好主意?
- 4. 在POSTGRES數據庫中爲'postgres'用戶添加密碼是個好主意嗎?
- 5. 在Mongo數據庫中存儲圖像文件,這是一個好主意嗎?
- 6. 在數據庫中存儲密碼哈希的未加密鹽
- 7. 數據庫列中的CSV - 不是一個好主意嗎?
- 8. 創建大量couchdb數據庫來存儲註釋是一個好主意嗎?
- 9. 將數據保存在strings.xml中是一個好主意嗎?
- 10. 在數據庫字段中存儲一個ID的哈希值?
- 11. 將資源的密鑰存儲在靜態類中是一個好主意嗎?
- 12. 單身REST數據庫資源是一個好主意嗎?
- 13. 創建數據庫包裝不是一個好主意嗎?
- 14. 與哈希存儲密碼
- 15. 替代使用哈希存儲密碼在數據庫中
- 16. 在數據庫中存儲SHA512密碼哈希
- 17. 比較兩個密碼哈希值 - nodejs
- 18. 爲每個域對象創建一個接口是一個好主意嗎?
- 19. 在數據庫中保存「聊天」數據是個好主意嗎?
- 20. 爲每個用戶使用SqlCacheDependency是個好主意嗎?
- 21. 會在appengine數據存儲中引用計數是個好主意嗎?
- 22. 一般總是一個好主意總是哈希唯一標識符的URL?
- 23. 將亞馬遜Dynamo中的對象存儲爲Json是一個好主意嗎?
- 24. 使用整數列來存儲美國郵政編碼到數據庫是一個好主意嗎?
- 25. 在數據庫中存儲javascript和css是一個壞主意嗎?
- 26. Kong:在kong數據存儲中存儲業務邏輯和/或業務數據是一個好主意嗎?
- 27. C#,WinForms繪製存儲在ArrayList中的數據。這是個好主意嗎?
- 28. 是否可以驗證密碼哈希與另一個密碼哈希?
- 29. 在數據庫中存儲salt +密碼哈希和防止密碼攻擊
- 30. 在數據類中進行數據庫查詢是一個好主意嗎?
[在crypto stackexchange上查看此答案](https://crypto.stackexchange.com/a/31165)。總結一下,碰撞的可能性大約是2^64,假設你有兩個相同的哈希值,它們是單獨的賬戶,那麼如何知道? – ourmandave
我投票結束這個題目,因爲它屬於crypto.se.com –