好吧,我有点困惑。我试图使用MessageDigest将我的密码存储在数据库中作为MD5哈希值,然后在用户尝试登录时抽出哈希以检查用户的密码。我是否需要将MessageDigest对象从寄存器传递给登录?
因此,当用户注册时,在注册时。 jsp的,我用这个代码来自己的密码(字符串被称为“密码”中的代码)转换为一个哈希(称为“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对象吗?
是的,我很抱歉,你是对的。我的代码中有一个错误。 – user752894 2011-05-13 19:37:39