如何在java中从数据库中检查用户给定密码为md5格式的密码

问题描述 投票:0回答:2

我在普通字符串中输入密码

public JobSeeker validateJobSeeker(String um, String pas) {

    System.out.println("in side jobseek valid dao");
    String hql= "select j from JobSeeker j where j.emailid=:u and j.password = COMPRESS(MD5(:pass))";

    List<JobSeeker> listofjobseeker = (List<JobSeeker>) sf.getCurrentSession()
        .createQuery(hql)
        .setParameter("u", um)
        .setParameter("pass", pas).list();
    return  ( listofjobseeker.size() > 0 ) ? listofjobseeker.get(0)  : null;
}

O / p = List listofjobseeker = null。

这是我的表:

 select * from jobseeker;

id | confirmpassword  | emailid  | message | password | phoneno| username | usertype  | address_id |
 +----+----------------------------------+-----------------------+---------+-
    |  1 | 8337da1b34a7b4fec56bc0a418ca6e22 | [email protected] | NULL    | 
 8337da1b34a7b4fec56bc0a418ca6e22 | 123456 | Angad    | jobseeker |          1

我想验证用户登录。我将用户给定的密码转换为md5传递格式,并在user_registration时存储到数据库中。当用户使用相同的email_id和密码登录时。我无法检查md5格式的传递给用户传递。

spring hibernate hql md5
2个回答
1
投票

您可以先将原始密码转换为MD5格式,然后再将其与数据库进行匹配。以下方法应该有所帮助。

private static String encode(String md5){
       try {
            java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
            byte[] array = md.digest(md5.getBytes());
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < array.length; ++i) {
              sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));
           }
            return sb.toString();
        } catch (java.security.NoSuchAlgorithmException e) {
        }
        return null;

    }

您可以按以下方式更改方法。

public JobSeeker validateJobSeeker(String um, String pas) {
  String encryptedPass = encode(pas);
  ...
  .setParameter("pass", encryptedPass).list();

}

0
投票

我找到了解决问题的方法。我使用SQLQUERY而不是SQL,因为我不知道匹配md5传递给用户传递的HQL语法:使用emaild验证用户和普通用户传递比较md5加密传递。

我们在下面结帐:

String hql =    "SELECT IF ((SELECT password FROM JobSeeker WHERE emailid = :u) = MD5(:pass), 'true', 'false') as r ";

        SQLQuery sql =    (SQLQuery) sf.getCurrentSession()
                                                                 .createSQLQuery(hql)
                                                                   .setParameter("u", um)
                                                                      .setParameter("pass", pas);

         sql.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
         Object validate = sql.uniqueResult();
         Map map = (Map) validate;
         System.out.println("inside sys.out.print is ========= " + map.get("r"));
         String val = (String) map.get("r");
         System.out.println("val is  = " + val);

         if(val.equals("true"))
         {
             List<JobSeeker> jobSeeker = (List<JobSeeker>) sf.getCurrentSession().createQuery("select j from JobSeeker j where j.emailid =:u ")
                                                          .setParameter("u", um).list();
             return (jobSeeker.size() > 0 ) ? jobSeeker.get(0) : null ;
         }
         else{  System.out.println("Invalid User , plz retry :( ");
             return null;
         }

    }  
© www.soinside.com 2019 - 2024. All rights reserved.