我已经在我的应用程序中添加了一个哈希和salt函数,并且工作正常,但是一旦我将byte []数组存储到我的数据库然后尝试检索它,它会得到错误的值,每次检索到的值是不同的。
这是将字节数组中的数据存储到数据库中。
String query = "INSERT INTO `teach`.`users`(`id`, `forename`, `surname`, `email`, `username`, `salt`, `password`, `type`) values(?, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement registerStatement = null;
try {
registerStatement = ServerProgram.getDatabase().getConnection().prepareStatement(query);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
registerStatement.setInt(1, 0);
registerStatement.setString(2, forename);
registerStatement.setString(3, surname);
registerStatement.setString(4, email);
registerStatement.setString(5, username);
registerStatement.setBytes(6, salt);
registerStatement.setBytes(7, hashedPassword);
registerStatement.setString(8, "student");
registerStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
这是检索它的代码(loginExists是resultSet)
byte[] salt = loginExists.getBytes("salt");
byte[] expectedHash = loginExists.getBytes("password");