Problemas para comparar pass (JBCrypt)(checkpw))
Publicado por lyvalle (2 intervenciones) el 18/07/2019 01:30:19
Hola a todos, estoy teniendo problemas para comparar una contraseña de texto plano y un hash guardado en mi BD. Para ello utilizo el método checkpw(plainpass, hashpass) de Bcrypt.
En mi BD tengo guardado un hash y uso el checkpw para ver si coinciden con la contraseña ingresada por el usuario en el login de acceso, pero nunca coinciden. Si alguien pudiera ayudarme se lo agradeceria. Gracias de antemano.
Aqui les dejo lo que considero más importante de mi código:
En mi BD tengo guardado un hash y uso el checkpw para ver si coinciden con la contraseña ingresada por el usuario en el login de acceso, pero nunca coinciden. Si alguien pudiera ayudarme se lo agradeceria. Gracias de antemano.
Aqui les dejo lo que considero más importante de mi código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*Genero el hash para guardarlo en la BD*/
String hash_pass = BCrypt.hashpw(pass_usuario, BCrypt.gensalt());
try {
Connection cn = DriverManager.getConnection("jdbc:mysql://localhost/proyecto_final", "root", "");
PreparedStatement ps = cn.prepareStatement(" INSERT INTO `usuario` ( `Nombre`, `Usuario`, `Password`, `TipoUsuario`) VALUES ( ?, ?, ?, ?, ?, ?,?) ");
ps.setString(1, nombre_usuario);
ps.setString(2, usser_usuario);
ps.setString(3, hash_pass);/*Inserto el hash en la BD*/
ps.executeUpdate();
/*En otra clase tengo el siguiente código*/
Connection cn = DriverManager.getConnection("jdbc:mysql://localhost/proyecto_final", "root", "");
PreparedStatement ps = cn.prepareStatement("SELECT `Usuario`,`Password`,`TipoUsuario`,`Estatus` FROM `usuario` "
+ "WHERE `Usuario`= ? ");
ps.setString(1, mostrar_usuario);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
/*Capturo el hash guardado en la BD*/
String pass_hasheada = rs.getString("Password");
/*Hago la comparación, pero no me funciona*/
if (BCrypt.checkpw(pass, pass_hasheada)) {
String tipo_usuario = rs.getString("TipoUsuario");
String estatus = rs.getString("Estatus");
if (tipo_usuario.equals("Administrador") && estatus.equals("Activo")) {
Ventana_Administrador vista_adm = new Ventana_Administrador();
vista_adm.setVisible(true);
}
Valora esta pregunta


0