Как проверить правила паролей в java на стороне сервера, если пароль зашифрован с использованием MD5? - PullRequest
0 голосов
/ 20 апреля 2020
    <!-- 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) 
        {

        }

1 Ответ

0 голосов
/ 20 апреля 2020

Как сказал Trinopoty, MD5 - это не алгоритм шифрования, а алгоритм хеширования. Это означает, что он только односторонний, и вы не сможете изменить его.

Однако это больше не относится к алгоритму MD5 (и так много лет спустя).

Один из способов сделать это - взломать пароль. В github есть много реализаций (просто найдите «Радужные таблицы MD5»). Затем просто выполните проверки.

Вы можете протестировать его на онлайн-сервисах, таких как http://reversemd5.com/

Кроме того, обратите внимание, что это крайне небезопасно (и производительность стоит дорого) , Если у вас есть нарушение, то хеширование паролей в MD5 - это то же самое, что использование их в виде простого текста.

Вы должны использовать безопасные каналы соединения (HTTPS), получить пароль в виде открытого текста, выполнить проверки и храните его, используя безопасный механизм хеширования (BCrypt или PBKDF2) при регистрации или изменении пароля.

Когда пользователь входит в систему, просто сделайте ха sh из полученного пароля и сравните его с тем, который вы хранится в базе данных.

...