玩!哈希密码返回错误结果

jjc*_*pek 5 passwords hash md5 playframework

我正在使用Play 1.2.1.我想哈希我的用户密码.我认为那Crypto.passwordHash会很好,但事实并非如此.passwordHash文档说它返回MD5密码哈希.我在fixture中创建了一些用户帐户,我把md5密码哈希:

  ...
User(admin):
  login: admin
  password: f1682b54de57d202ba947a0af26399fd
  fullName: Administrator
  ...
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试登录时,使用以下内容:

user.password.equals(Crypto.passwordHash(password))
Run Code Online (Sandbox Code Playgroud)

它不起作用.所以我在我的autentify方法中放了一个日志语句:

Logger.info("\nUser hashed password is %s " +
                    "\nPassed password is %s " +
                    "\nHashed passed password is %s",
                    user.password, password, Crypto.passwordHash(password));
Run Code Online (Sandbox Code Playgroud)

密码哈希确实不同,但是嘿!passwordHash方法的输出甚至不是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==
Run Code Online (Sandbox Code Playgroud)

那个怎么样?怎么解决?或许我必须实施自己的解决方案?

Nic*_*sky 5

Crypto.passwordHash返回base64编码的密码哈希,而您将与十六进制编码进行比较.

  • 我个人认为文档应该提到这个细节. (2认同)