2017-10-09 92 views
0

我正在開發一個具有用戶帳戶的組項目。現在我試圖找出如何加密,存儲和檢查密碼。我們已經實現了存儲密碼,但還沒有對它們進行加密並存儲它們。我正在使用Java庫Jasypt,更具體地說我正在使用他們的StandardStringDigester類。使用Java庫jasypt摘要加密密碼

我的問題是,每當我消化相同的字符串它出來不同。我能找到的準確檢查字符串是否與消解字符串匹配的唯一方法是使用Digesters Match方法。此方法需要兩個參數,即未加密的密碼字符串和已消解的密碼字符串。據我所知,然而,驗證不應該在客戶端進行,服務器端永遠不應該看到未經消化的密碼。那麼,如何消化密碼,將其發送到服務器,然後檢查它是否與該用戶的存儲(也是消化的)密碼相符?

回答

0

要安全地存儲密碼,您應該瞭解如何以及爲什麼,您可以在論壇上稍微搜索一下,有關此主題的許多資源。

這是比較全面的一個:https://crackstation.net/hashing-security.htm

我的問題是,每當我消化相同的字符串不同的看法出來。

據我所知,StandardStringDigester使用salt來散列輸入。這意味着文摘每次都會隨機發布。它應該是這樣。

那麼,如何消化密碼,將其發送到服務器,

您發送密碼明文到服務器時,TLS(HTTPS)應注意如果完整性和confidentality

然後檢查它是否與該用戶的存儲(也是消化的)密碼相符?

我相信你正在尋找比賽方法: matches(String message, String digest)的Jasyp應採取的鹽,創建具有相同鹽新的消化。如果我錯了,請糾正/評論

+0

好的非常感謝,我的問題是,我認爲這是不好的做法發送明文到服務器。我想確定,cleartext只是意味着未加密,因爲用戶輸入了正確的密碼? – Alex5775

+0

@ Alex5775的確如此。只要您在客戶端上散列任何內容,散列/摘要就會成爲密碼。這就是爲什麼我們需要https來照顧它​​ – gusto2

+0

再一次感謝了很多,只是另外一個問題:我正在使用Java,Java(特別是套接字)是否自動實現了TLS,還是必須獲得另一個庫實施這個? – Alex5775