<!-- language: lang-java -->
try
{
DAO ddao = new DAO();
HttpSession session = request.getSession();
userBean ub = null;
if (session.getAttribute("userdet") != null)
{
ub = (userBean) session.getAttribute("userdet");
}
if (ub == null)
{
return mapping.findForward("sesexpire");
}
if (!formValidation.validationTest(request))
{
session.invalidate();
return mapping.findForward("hack");
}
if (!StringUtils.isEmpty(request.getMethod()) && request.getMethod().equalsIgnoreCase("POST"))
{
// how to perform server side validation for password field rules like
1) Password must contain atleast eight characters.
2) Password must not exceed 255 characters.
3) Password must contain atleast one number (0-9)
4) Password must contain atleast one lowercase letter (a-z)
5) Password must contain atleast one uppercase letter (A-Z)
6) Password must contain atleast one special character. due to md5 is applied at client side
}
} catch (Exception e)
{
}
正如Trinopoty所说,MD5不是一种加密算法,而是一种哈希算法。这意味着这只是单向的,你不应该能够逆转它
然而,对于MD5算法来说,这已经不再是事实了(而且从现在起很多年了(。
一种方法是破解密码。github中有许多实现(只需搜索"MD5彩虹表"(。然后,只需执行验证。
您可以在以下在线服务上进行测试http://reversemd5.com/
此外,请注意,这是非常不安全的(而且性能成本很高(。如果你有漏洞,用MD5散列密码和用纯文本散列密码是一样的。
您应该使用安全连接通道(HTTPS(,以明文形式接收密码,执行验证,并在注册或更改密码时使用安全哈希机制(BCrypt或PBKDF2(进行存储。
当用户登录时,只需对收到的密码进行散列,并将其与您存储在数据库中的密码进行比较。