我正在开发一个使用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