我正在使用Spring MVC,我想加密以dB爲單位保存的密碼,我查看了其他線程,並且他們建議使用MD5。使用MD5是否是一種好習慣,或者Spring中是否有其他方法來實現它?Spring MVC中的密碼加密
回答
你能澄清,如果你正在尋找春季安全或者Spring MVC。你的問題標題是「」Spring MVC中的密碼加密「,而你已經爲Spring Security標記了這個問題。
春季安全建議使用以下 org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
我正在尋找密碼加密在Spring Security – Ramanathan
好,我已經分享了Spring參考頁面的相關鏈接。如果您需要任何幫助,請添加評論。 – bhrt
否;使用BCrypt - 可在BCryptPasswordEncoder
的Spring中使用。
不要使用MD5,MD5哈希的問題在於它的執行速度相對較快,如果有人得到哈希值,他們可以很容易地蠻力。還有彩虹表,它們是密碼列表及其關聯的MD5散列。
正如@Jan Nielsen所言,BCrypt遠遠優越。我個人使用PBKDF2。這兩種方法都是通過在生成散列時使用隨機鹽來工作的。在數據庫中存儲salt和哈希密碼。我希望更進一步,並存儲用於創建散列的迭代次數。
這是一個關於密碼加密的好博客,其中詳細介紹了代碼示例的更多細節。 https://crackstation.net/hashing-security.htm
你可以使用BCryptPasswordEncoder
來編碼你的密碼,爲了做到這一點,你需要創建一個這個類的bean。
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
雖然註冊(保存新的用戶數據庫)你的用戶,你可以自動線PasswordEncoder
並調用encode
方法編碼密碼
@Autowired PasswordEncoder passwordEncoder;
public User registerUser(User user){
// other logic
String encryptedPassword = passwordEncoder.encode(user.getPassword());
user.setPassword(encryptedPassword);
//logic to save the user to DB
}
感謝您的回答,但我不明白,如果我通過這種方式加密密碼當我嘗試登錄時密碼如何匹配?因爲如果我沒有錯誤'BCryptPasswordEncoder'所有時間都會生成不同的值。通過我對Spring的新方法:) –
當您嘗試登錄時,如果您將密碼作爲簡單文本傳遞給登錄方法,那麼您將需要再次調用密碼的用戶提供的密碼上的編碼方法,然後再比較 –
- 1. 加密ASP.NET MVC 3中的密碼
- 2. MVC 4加密默認密碼
- 3. 加密App.config中的密碼
- 4. AngularJS中的密碼加密
- 5. Delphi中的密碼加密
- 6. Jackrabbit中的密碼加密
- 7. 在VBA密碼框中加密密碼
- 8. 加密密碼
- 9. 加密密碼
- 10. 密碼加密
- 11. 加密密碼
- 12. 加密密碼
- 13. 密碼加密
- 14. 密碼加密
- 15. 密碼加密
- 16. SPRING MVC數據和密碼驗證
- 17. 在spring-mvc上處理密碼確認
- 18. 加密郵件密碼
- 19. 未加密密碼的加密密碼用戶羣
- 20. PHP - 解密加密密碼
- 21. Spring Cloud Config中的加密
- 22. 加密密碼FOSUserBundle
- 23. QML密碼加密
- 24. python密碼加密?
- 25. Acegi密碼加密
- 26. cordova密碼加密
- 27. Java密碼加密
- 28. C#加密密碼
- 29. 驗證grails中的加密密碼
- 30. 用法:「EncryptUtil encrypt」密碼密碼:要加密的明文密碼
如果您正在使用彈簧安全,你可以使用Spring Security密碼編碼器也可以和實現你自己的 –