Estoy usando Play 1.2.1. Quiero cifrar la contraseña de mis usuarios. Pensé que Crypto.passwordHash
sería bueno, pero no lo es. La documentación de passwordHash dice que devuelve el hash de contraseñas MD5. He creado algunas cuentas de usuario en luminaria, donde pongo MD5 hash de la contraseña:¡Juego! hash password devuelve un resultado malo
...
User(admin):
login: admin
password: f1682b54de57d202ba947a0af26399fd
fullName: Administrator
...
El problema es que cuando intento iniciar sesión, con algo como esto:
user.password.equals(Crypto.passwordHash(password))
y no lo hace trabajo. Así que puse una declaración de registro en mi método autentify
:
Logger.info("\nUser hashed password is %s " +
"\nPassed password is %s " +
"\nHashed passed password is %s",
user.password, password, Crypto.passwordHash(password));
Y los hashes de contraseñas son de hecho diferentes, pero bueno! La salida de passwordHash
método no es aún un hash MD5:
15:02:16,164 INFO ~
User hashed password is f1682b54de57d202ba947a0af26399fd
Passed password is <you don't have to know this :P>
Hashed passed password is 8WgrVN5X0gK6lHoK8mOZ/Q==
¿Qué hay de eso? ¿Como arreglarlo? O tal vez tengo que implementar mi propia solución?
BTW no es muy inteligente usar MD5-Hash simple para las contraseñas. Debe haber al menos una sal además. – niels
@niels - ¡Lo sé, pero esto es solo un simple proyecto de muestra para aprender a jugar! – jjczopek
Creo que te puede gustar la respuesta en el siguiente enlace, sugiere cómo usar md5 en java http: // stackoverflow.com/questions/415953/generate-md5-hash-in-java – engin