2012-07-13 95 views
0

嗨,我正在使用Hibernate将用户模型存储在数据库中,发现您可以使用jayspt并行地将用户名和密码的加密从业务逻辑中抽象出来。这里有一个link描述我的意思。这是休眠站点的另一个link。现在我可以存储数据了。它是加密的。我可以阅读它,很酷,但是当我试图查询事情变得有问题时。我也很少不确定发生了什么事。我首先尝试用未加密的字符串查询。我得到一个空指针。我用加密的字符串查询。我得到了一个空指针,所以我对于发生了什么感到有点困惑。以下是查询:使用jayspt和休眠查询数据

public String getUserId(String email, String password) { 
    String encryptedPass = encryptor.encrypt(password); 
    String encryptedEMail = encryptor.encrypt(email); 
    Session sess = manager.getSession(); 
    Criteria crit = sess.createCriteria(MobsterUser.class); 
    crit.add(Restrictions.eq("email", encryptedEMail)).add(Restrictions.eq("password", encryptedPass)); 
    MobsterUser user = (MobsterUser) crit.uniqueResult(); 
    sess.flush(); 
    return user.getUserId(); 
} 

任何人有任何关于这里可能发生的事情的任何意见?

+0

我做了最后一件事。我将测试用户的电子邮件和密码硬编码到查询中。这也没有帮助。 – 2012-07-13 07:55:21

回答

1

您无法查询加密数据。你不应该加密,但散列密码。你不应该用密码查询。 使用Hibernate/Jasypt集成,您无需关心源代码中的加密(不包含“encryptor.encrypt”)。这是它背后的主要思想。