我在普通字符串中输入密码
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 = 列表listofjobseeker = null。
这是我的表:
select * from jobseeker;
id | confirmpassword | emailid | message | password | phoneno| username | usertype | address_id |
+----+----------------------------------+-----------------------+---------+-
| 1 | 8337da1b34a7b4fec56bc0a418ca6e22 | xyz@gmail.com | NULL |
8337da1b34a7b4fec56bc0a418ca6e22 | 123456 | Angad | jobseeker | 1
我想验证用户登录。我将用户给定的密码转换为md5传递格式,并在user_registration时存储到数据库中。当用户使用相同的email_id和密码登录时。我无法检查md5格式的传递给用户通过。
答案 0 :(得分: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();
}
答案 1 :(得分:0)
我找到了解决问题的方法。我使用SQLQUERY而不是SQL,因为我不知道HID语法匹配md5传递给用户传递:使用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;
}
}