2014-12-03 85 views
0

我在jsp中創建了一個登錄頁面。如何存儲密碼?

用戶名和密碼存儲在mysql中。

我想要一些加密密碼的建議,並稍後解密密碼(以驗證密碼標籤中的內容與該用戶名的數據庫中的內容是否相同)。

+3

你不 「加密」 的密碼。你哈希他們。 – 2014-12-03 14:13:54

+1

谷歌有多篇關於這方面的文章,例如http://howtodoinjava.com/2013/07/22/how-to-generate-secure-password-hash-md5-sha-pbkdf2-bcrypt-examples/。 – abalcerek 2014-12-03 14:20:41

+0

我嘗試通過數據加密標準(DES)機制來加密或解密文本,但不起作用,因爲我的SecretKey總是在變化。但是從上面的鏈接工作中像例如哈希密碼。 – David 2014-12-03 14:49:06

回答

4

將密碼保存到數據庫使用散列(MD5或SHA256)並將散列值存儲在數據庫表中之前。

登錄時,取出用戶密碼並使用相同的技術再次對其進行哈希處理,並與存儲在數據庫表中的哈希密碼匹配,以便爲此特定用戶使用。如果這兩個散列值匹配,那麼它是正確的密碼,否則密碼不匹配。

1

僅在必要時加密和解密密碼(例如,您想檢查6位密碼中的3位)。

如果你只是想檢查密碼保存哈希碼,只是比較哈希碼。

對MD5一看,這裏是源代碼片段:

MessageDigest md = MessageDigest.getInstance("MD5");