1
我使用eclipselink作爲JPA實現和PostgreSQL,並且希望在數據庫中存儲SHA-1哈希。 但我發現了一個異常這樣的:使用EclipseLink和PostgreSQL存儲SHA-1哈希
Internal Exception: org.postgresql.util.PSQLException: ERROR: invalid byte sequence for encoding "UTF8": 0x00 Error Code: 0 Call: INSERT INTO mbm_user (USERNAME, PRENAME, LASTNAME, PASSWORD) VALUES (?, ?, ?, ?) bind => [Hans, null, null, THE SHA-1 HASH]
的SHA-1散列是一些亂碼字符,我可以他們在這裏無法粘貼。
我的實體:
@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();
}
}
如何避免非法字符爲0x00的使用或者是問題在其他地方?
謝謝,我把它轉換成Base64字符串,就是這樣。 – LeonS 2010-11-24 11:36:57