0

嘿,伙计们,我正在使用 Hibernate 将用户模型存储在数据库中,并且发现您可以串联使用 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();
}

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

4

1 回答 1

1

您不能查询加密数据。您不应该加密而是散列密码。你永远不应该通过密码查询。使用 Hibernate/Jasypt 集成,您无需关心源代码中的加密(没有“encryptor.encrypt”)。这就是它背后的主要思想。

于 2012-09-13T15:16:45.460 回答