【发布时间】:2016-08-17 06:30:30
【问题描述】:
我正忙于登录 JFrame,系统将要求用户输入用户名和密码。密码使用 SHA-1 散列并存储在 MySQL 中
我遇到的问题是,对于完全相同的密码字符串,输出并不一致。 我需要一个使用 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");? -
"MD5"听起来不像会给你 SHA-1... -
谢谢,正确。抱歉,我尝试了许多不同的哈希算法。
-
@John 我在 ideone 中尝试了您的代码,它似乎工作正常。你确定输入是一样的吗? (可能尝试打印出我猜的密码)
标签: java mysql netbeans hash sha