Java - Problemas para comparar pass (JBCrypt)(checkpw))

 
Vista:

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:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problemas para comparar pass (JBCrypt)(checkpw))

Publicado por Yanet (2 intervenciones) el 18/07/2019 12:03:41
Hola, estuve revisando el link que me envió. Y no doy con el problema. En mi BD tenía el campo de la contraseña de tipo varchar de 60 bytes, lo cambie a binary y no hay forma de que las contraseñas coincidan.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar