目前我正在尝试从MD5中加密的数据库中获取密码。 E.G:
INSERT INTO Customer VALUES (1001, "Smith", "J.", "Alan", 'Mr', "43 The Glebe", "Mugwell Hill", "Nodnol", "", "N10 4SB", MD5("Alan"), "Mugwell Hill");
在这种情况下,密码是艾伦。 我正在尝试比较用户输入的密码。
String userid = request.getParameter("uname");
String pwd = request.getParameter("pass");
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/Erehwon","root", "");
Statement st = con.createStatement();
ResultSet rs;
rs = st.executeQuery("select * from Customer where customer_number='" + userid + "' and passwd ='" + pwd + "'");
if (rs.next()) {
session.setAttribute("userid", userid);
//out.println("welcome " + userid);
//out.println("<a href='logout.jsp'>Log out</a>");
response.sendRedirect("success.jsp");
} else {
out.println("Invalid password <a href='login_page.jsp'>try again</a>");
out.println(pwd);
out.println(userid);
}
正如您可能知道的那样,密码无效,因为输入值不是MD5格式。无论如何,我可以将密码转换为MD5或解密数据库密码,以便它们匹配吗?
答案 0 :(得分:0)
您无法从哈希中提取 密码。 这是不可能的,因为许多密码可以具有相同的MD5。想象一下,你有一个1GB文件的MD5。这将是一个非常好的压缩,但它不是因为您无法恢复初始信息。哈希不是加密。
您可以比较哈希值:
请参阅MessageDigest以获取MD5:
MessageDigest.getInstance("MD5").digest(yourString.getBytes("UTF-8"));