好吧,我有点困惑。我正在尝试使用 MessageDigest 将我的密码作为 MD5 哈希存储在数据库中,然后在用户尝试登录时提取哈希以检查用户的密码。
因此,当用户在 register.jsp 中注册时,我使用此代码将他们的密码(该字符串在代码中称为“password”)转换为哈希(称为“hashtext”):
MessageDigest m = MessageDigest.getInstance("MD5");
m.reset();
m.update(password.getBytes());
byte[] digest = m.digest();
BigInteger bigInt = new BigInteger(1,digest);
String hashtext = bigInt.toString(16);
while(hashtext.length() < 32 ){
hashtext = "0"+hashtext;
}
然后,我需要管理如何检查用户尝试登录时输入的密码。我有另一个页面:login.jsp,我在其中对输入的密码运行与上面完全相同的代码,并根据我从数据库中提取的哈希检查结果。
但是,这不起作用,我认为这是因为创建了一个新的 MessageDigest 对象 (MessageDigest.getInstance("MD5");),因此算法的工作方式不同。
我是否需要确保在 login.jsp 上使用与 register.jsp 相同的 MessageDigest 对象?