0

こんにちは、私はHibernateを使用してユーザーモデルをデータベースに保存しています。jaysptをタンデムで使用して、ビジネスロジックからユーザー名とパスワードの暗号化を抽象化できることがよくわかりました。これが私が何を意味するかを説明するリンクです。これが休止状態のサイトからの別のリンクです。これで、データを問題なく保存できます。暗号化されています。私はそれを読むことができます、かっこいいです、しかし私が質問しようとすると物事は問題になります。何が起こっているのかもよくわかりません。私は最初に暗号化されていない文字列でクエリを実行してみました。nullポインタを取得しました。暗号化された文字列でクエリを実行しました。nullポインターを取得したので、何が起こっているのか少し戸惑っています。クエリは次のとおりです。

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 に答える