我想用bcrypt和Spring安全性哈希和盐用户密码 .
这是我的用户模型(我删除了无用的代码):
public class User {
private Integer id;
private String email;
private String hashedPassword;
private String salt; //I want to use this salt.
private Boolean enabled;
//Getters & Setters
}
以下是我使用自己的salt创建新用户的方法:
@Transactional
public User create(String email, String password) {
User user = new User();
user.setSalt(BCrypt.gensalt(12)); //Generate salt
user.setEnabled(true);
user.setEmail(email);
user.setHashedPassword(BCrypt.hashpw(password, user.getSalt()));
return dao.persist(user);
}
这是 spring 配置:
在此配置中,我指示 PasswordEncoder 必须使用 User.getSalt() ;
Problem :我得到以下 Error 500 :
与crypto模块PasswordEncoder一起使用时,salt值必须为null .
在查看stackoverflow之后,似乎salt必须为null,因为BCryptPasswordEncoder使用自己的SaltSource .
有没有办法使用我的 SaltSource ?要么
哪个可靠的算法会允许我 SaltSource ?
谢谢 .