将散列密码与 salt (bcrypt) 进行比较总是 returns false

Comparing hashed passwords with salt (bcrypt) always returns false

在学校做练习时,我被要求使用 bcrypt 正确存储密码(在数据库中散列)。比较它们时,方法总是 returns 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 专家可以帮助我。 提前致谢!

改变

BCrypt.checkpw(password, hashedPW);

BCrypt.checkpw(enteredPassword, password);

然后它会正确评估。

密码加盐生成散列也没关系。

具有不同盐的相同密码的哈希值,在根据生成它的密码进行评估时,将评估为真。

哈希是一种算法,这意味着我们无法通过哈希重新计算密码。我们只能使用哈希算法将密码与密码的哈希值进行比较。哈希算法通常用于生成哈希值并将其与生成它的任何内容进行比较。我们使用哈希来安全地存储密码