Hola Foro,
Disculpen la consulta, estoy desarrollando un login en Delphi 2010. Utilizo los componentes Unidac, con una conexión directa a Oracle.
En la base de datos tengo una tabla Usuarios con campos(codigo_usuario,usuario,contrasena,estado)
el campo contrasena almacena el hash en md5 de la contrasena.
Tengo la idea de consultar la tabla desde la aplicacion, comparando usuario y contrasena, para brindarle acceso al usuario o negarse lo. El problema que tengo, radica en la comparación del hash.
Tengo el siguiente código
Tengo un solo usuario en la tabla usuario,
la contrasena es 12345 y el hash es
827ccb0eea8a706c4c34a16891f84e7b
Código Delphi
[-]
Hash_contrasena:=CalcHash2(Texto_Contrasena.Text,haMD5); //827ccb0eea8a706c4c34a16891f84e7b
Consulta.SQL.Clear;
Consulta.SQL.Add('SELECT USUARIO,CONTRASENA,ESTADO FROM USUARIO WHERE USUARIO=:INGRESO_USUARIO');
Consulta.ParamByName('INGRESO_USUARIO').AsString:=Texto_usuario.Text;
try
Consulta.Open;
TEXTO_USUARIO.Text:=Consulta.FieldByName('CONTRASENA').AsString; finally
end;
No entiendo a que se deba este problema: En conclusión.
Hash en Base de datos: 827ccb0eea8a706c4c34a16891f84e7b
Hash Generado con CalcHash2 : 827ccb0eea8a706c4c34a16891f84e7b
Consulta para obtener el hash de la base de datos: b66d99aa0d2457fe5bccf2232a1c3140
Cual creen que sea la razón de este problema, sera que se debe a la magnitud de la cadena extraída?
Ya había intentado comparar el hash directamente contra la base de datos, pero entonces ya no devuelve nada.
Muchísimas gracias por su ayuda y aporte.
Saludos.