我正在開發一個使用Java EE的應用程序,並且實際遇到了一些麻煩,以瞭解如何驗證用戶,主要問題在於,密碼在數據庫中進行加密時基於電子郵件和密碼進行身份驗證通過Jasypt SHA-256加密算法。在密碼加密的情況下登錄用戶
我可以獲得建議嗎?
ConfigurablePasswordEncryptor passwordEncryptor = new ConfigurablePasswordEncryptor();
passwordEncryptor.setAlgorithm("SHA-256");
passwordEncryptor.setPlainDigest(false);
String motDePasseChiffre = passwordEncryptor.encryptPassword(motDePasse);
utilisateur.setMdp(motDePasseChiffre);
編輯
所以我有這個ConfigurablePasswordEncryptor passwordEncryptor = new ConfigurablePasswordEncryptor(); valid=passwordEncryptor.checkPassword(mdp,utilisateur.getMdp());
返回boolean,平原密碼是加密的密碼或者沒有。
我在Tomcat的錯誤:
org.jasypt.exceptions.EncryptionOperationNotPossibleException org.jasypt.digest.StandardByteDigester.matches(StandardByteDigester.java:1106) org.jasypt.digest.StandardStringDigester。匹配(StandardStringDigester.java:1052) org.jasypt.util.password.ConfigurablePasswordEncryptor.checkPassword(ConfigurablePasswordEncryptor.java:251) projet.helpdesk.form.ConnexionForm.connecterUtilisateur(ConnexionForm.java:47) projet.helpdesk.servlets .Authentification.doPost(Authentification.java:30) javax.servlet.http.HttpServlet.service(HttpServlet.java:661) javax.servlet.http.HttpServlet.service(HttpServlet.java:742) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter .java:53)
請提供您的代碼以及您正在使用的Jasypt SHA-256文檔的鏈接。還要注意哈希不是加密。如果您使用Jasypt ['StrongPasswordEncryptor'](http://www.jasypt.org/api/jasypt/1.9.2/org/jasypt/util/password/StrongPasswordEncryptor.html),那麼這是一個好方法,而且名字是不幸的。 – zaph
由於開發人員沒有花時間理解正確的安全措施是不合理的,因此將用戶的安全置於危險之中,存在任何風險。請參閱Security Stackexchange上的[如何安全散列密碼,理論](http://security.stackexchange.com/questions/211/how-to-securely-hash-passwords/31846#31846)。請參閱OWASP(Open Web Application Security Project)[密碼存儲備忘單](https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet#Leverage_an_adaptive_one-way_function)。 – zaph
不要在問題中加入「已解決」,請發佈解答問題解決方案的答案。 – 1615903