我的网络应用使用BCrypt加密用户密码并将其保存到MySQL(列数据类型: varchar(255))
BCrypt.hashpw(password, BCrypt.gensalt(15));
但是,当用户登录时,BCrypt.checkpw无法匹配与注册时使用的密码相同的密码(在散列之前)。
boolean passwordMatch = BCrypt.checkpw(password, user.getPassword()); //false
我不知道发生了什么。有没有人知道我应该检查哪些?
答案 0 :(得分:0)
我刚刚发现它似乎与BCrypt没有任何关系,因为我试图重新编译我的网络应用程序,登录工作,但是,我不明白为什么它需要重新编译。
答案 1 :(得分:0)
BCrypt.hashpw(password, BCrypt.gensalt(15));//this is when you insert
//********
boolean passwordMatch = BCrypt.checkpw( plainPassword , myPasswordOnDB);
(plainPassword
是字符串密码,myPasswordOnDB
是加密密码)
这是检查密码的正确方法。如果这对您不起作用,请尝试使mySQL列密码为char(60)。