因此,我目前正在学习 SpringBoot,现在我正在尝试将密码与用户的其他数据一起存储在数据库 (MySql) 中。为了确保安全,我使用加盐哈希来存储。生成这些散列并将它们存储在数据库中工作正常,但是当我尝试通过获取盐和密码来验证密码时,我得到了不同的散列,因此得到了错误的结果。
下面是我的代码。
第一个:User
我开始验证的类
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long uID;
@NotNull
private String nname;
@NotNull
private String vname;
private String email;
private String telnr;
@Embedded
private Address address;
@NotNull
private boolean isAdmin;
private String hash;
// Default Constructor
public User() {
}
// Constructor
public User(String name, String vname, String email, String telnr, Address address, boolean isAdmin,
String password) throws NoSuchAlgorithmException {
HashHelper hashHelper = new HashHelper();
this.nname = name;
this.vname = vname;
this.email = email;
this.telnr = telnr;
this.address = address;
this.isAdmin = isAdmin;
this.hash = hashHelper.createHash(password);
}
public boolean validateHash(String password) {
HashHelper hashHelper = new HashHelper();
// Get the used Salt
String[] parts = this.hash.split(":");
byte[] salt = parts[0].getBytes();
// Create Hash with old salt
String newHash = hashHelper.getHash(password, salt);
if (parts[1] == newHash) {
return true;
}
return false;
}
其次,在我的课程HashHelper中,我处理与散列有关的所有事情。createHash每当存储新密码(因此,新盐)并getHash使用特定盐进行验证时,我都会使用。
RISEBY
相关分类