我不是安全专家,并且碰巧没有考虑太多,因为我的大多数应用程序都在本地 Intranet 上运行,所以谁关心安全性?:)
但实际上,我正在努力使它正确。
我已经在 glassfish 上设置了 JDBC 领域,现在我正在使用来自互联网的这段代码使用 MD5 散列来保存我的密码。
public static String getMD5(String input)
{
try
{
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(input.getBytes());
byte byteData[] = md.digest();
//convert the byte to hex format method 1
StringBuffer sb = new StringBuffer();
for (int i = 0; i < byteData.length; i++)
{
sb.append(Integer.toString((byteData[i] & 0xff) + 0x100,
16).substring(1));
}
return sb.toString();
}
catch (NoSuchAlgorithmException e)
{
throw new RuntimeException(e);
}
}
现在我的问题是,在更改密码用例期间......它只是比较哈希是否等于验证输入的密码是否与我的数据库中的密码相同,如下面的代码?
public static void main(String[] args)
throws NoSuchAlgorithmException
{
String currentPassword = "java";
String inputValue = "java1";
String string1 = getMD5(currentPassword);
String string2 = getMD5(inputValue);
System.out.println("Is equal = " + string1.equals(string2));
}
我在某处读到 MD5 是一种单向哈希,所以我无法将密码解密回字符串?
抱歉,如果我的问题太简单但我想确认一下我的理解?
谢谢