0

休止状態の一種の古いバージョンを使用する、EXAMPLE と呼ばれる DB を使用する既存のアプリケーションがあります。

ユーザーのパスワードはorg.jasypt.hibernate.type.EncryptedStringTypeとして保存されます

<typedef name="encryptedString" class="org.jasypt.hibernate.type.EncryptedStringType">
    <param name="encryptorRegisteredName">jasyptHibernateEncryptor</param>
</typedef>

    <property name="password" type="encryptedString">
        <column name="pwd" length="254" not-null="true" />
    </property>

いつもこのようになっているかどうかはわかりませんが、基本的に、ユーザーのクエリを実行すると、パスワードが自動的に復号化されるため、クリアテキストになります。

ここで、まったく同じデータベースで、新しい Web アプリケーション (webapp2 と呼びます) が実行されています。これは、パスワードを別の方法で暗号化し、解読できない方法で暗号化します。

私が求められたのは、古いユーザーを「新しい方法」に移行することでした。私がしたことは、3 つのモジュールを含む Maven プロジェクトを作成することでした。

  • module1 (別名 oldie) は、古い方法でデータベースにクエリを実行できるはずです (そのため、ユーザー テーブルに対するクエリごとに、ユーザーのパスワードをクリア テキストで取得できます)。
  • module2 (別名 newie) は、新しい方法でデータベースにクエリを実行するだけです。
  • module3には、module1 の UserService と module2 の UserService をそれぞれ使用してユーザー パスワード (クリア テキスト) を読み取り、新しい方法に戻すダミー クラスが 1 つある必要があります。

問題: 私が直面しているのは、module3がさまざまなバージョンの休止状態ライブラリを処理しなければならないなど、さまざまな問題に直面していることです。

module3の構成(これらはすべて Spring アプリケーションです) で、module1 と module2 の両方からサービスと daos を自動配線しているため、多くの混乱が生じ、最終的には問題が発生します。

起こっているように見えるのは、sessionFactories または daos (今のところ) のインスタンス化を不可能にする依存関係が混在していることです。

どんな助けでも大歓迎です。

4

1 に答える 1

0

両方のバージョンの Hibernate を同時に使用しようとはしません。あなたは出来る

  • 小さなユーティリティクラスで暗号化/復号化の両方の部分を抽出し、JDBC を使用して古い方法で復号化し、新しい方法で暗号化します。
  • または、最初のモジュールで最初のパスを実行してすべてのパスワードを平文で抽出し、それらをファイルまたは専用のデータベース テーブルに配置してから、2 番目のモジュールで 2 番目のパスを実行して平文のパスワードを抽出し、それらを新しい方法を使用してエンティティを暗号化します。
于 2011-10-11T17:11:31.137 に答える