我忙於登錄JFrame,系統將要求用戶輸入用戶名和密碼。密碼使用SHA-1散列並存儲在MySQLSHA1不會爲相同的字符串輸入生成相同的散列值?
我遇到的問題是,對於完全相同的密碼字符串,輸出不一致。 我需要一個使用SHA1的散列,它會產生相同的輸出,以便我可以根據數據庫中的散列驗證它,以證明用戶輸入了正確的密碼。
這是我編寫的sha1。
try
{
String password = txtPassword.getPassword().toString();
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(password.getBytes());
byte byteData[] = md.digest();
//convert the byte to hex format
StringBuffer sb = new StringBuffer();
for (int i = 0; i < byteData.length; i++) {
sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
}
System.out.println("Hex format : " + sb.toString());
}
catch (Exception e)
{
JOptionPane.showMessageDialog(this, e);
}
上面的代碼是否存在問題,會導致它對同一個字符串產生不同的輸出。
'MessageDigest.getInstance(「SHA-1」);'? – noahnu
'「MD5」'聽起來不會給你帶來SHA-1 ... –
謝謝,正確。對不起,我正在嘗試許多不同的哈希算法。 – John