【发布时间】:2017-09-16 18:06:36
【问题描述】:
在为学校做练习时,我需要使用 bcrypt 正确存储密码(在数据库中散列)。比较它们时,该方法总是返回 false。我的代码如下所示:
注册:
String username = editTextUsername.getText().toString();
String password = editTextPassword.getText().toString();
String hashedPW = BCrypt.hashpw(password, BCrypt.gensalt());
User user = new User(username, hashedPW);
user.save();
登录:
String username = editTextUsername.getText().toString();
String enteredPassword = editTextPassword.getText().toString();
String hashedPW = BCrypt.hashpw(enteredPassword, BCrypt.gensalt());
User u = usercontroller.getUser(username); //gets user object
String password = u.getPassword;
BCrypt.checkpw(password, hashedPW); //always returns false
我希望有任何 BCrypt 专家可以帮助我。 提前谢谢!
【问题讨论】:
-
您应该从 UI 传递纯文本密码作为第一个参数和第二个参数从您的商店(散列)..
-
我不是您要找的 BCrypt 专业人士,但我可以想象
BCrypt.gensalt()每次调用它时都会返回一个不同的随机数。因此,我认为您的哈希值不同,因为如果 gensalt 不同,结果会不同
标签: java android hash bcrypt salt