Я использую eclipselink в качестве реализации JPA и PostgreSQL и хочу хранить хэши SHA-1 в базе данных.
Но я получаю исключение, подобное этому:
Внутреннее исключение: org.postgresql.util.PSQLException: ОШИБКА: неверная последовательность байтов для кодировки "UTF8": 0x00
Код ошибки: 0
Звоните: INSERT INTO mbm_user (ИМЯ ПОЛЬЗОВАТЕЛЯ, ИМЯ, ЛАСТНИКА, ПАРОЛЬ) ЗНАЧЕНИЯ (?,?,?,?)
bind => [Ганс, ноль, ноль, хэш SHA-1]
SHA-1 HASH - это несколько бессмысленных символов, и я не могу их здесь вставить.
Моя сущность:
@Entity
@Table(name="mbm_user")
public class User extends CanAccessBook{
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(nullable = false)
private Long id;
@Column(nullable = false)
private String username;
@Column(nullable = false)
private String password;
private String prename;
private String lastname;
...
...
}
И метод генерации хэша SHA-1:
public void setPassword(String password) {
try {
MessageDigest md = MessageDigest.getInstance("SHA-1");
byte[] encryptPassword = md.digest(password.getBytes());
this.password = new String(encryptPassword);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
Как я могу избежать использования нелегального char 0x00 или проблема в другом месте?