当社のセキュリティ部門は、256 ビット暗号化を使用して SSN やユーザー名などを暗号化することを求めているため、以下のサンプル コードで JASYPT を使用することにしました。
encryptor = new StandardPBEStringEncryptor();
encryptor.setProvider(new BouncyCastleProvider());
encryptor.setAlgorithm("PBEWITHSHA256AND256BITAES-CBC-BC");
encryptor.setPassword(OUR_KEY)
encryptor.encrypt("TEXT TO ECNCRYPT")
私たちが気付いた問題は、アプリケーションがローカル マシンから暗号化されたレコードを作成するときに、キーが同じであっても app-dev サーバー上のアプリケーションがそれを復号化できず、その逆も同様であるということです。JASYPT がソルトにマシン固有の情報 (Mac アドレスなど) を追加しているようです。
使用してFixedStringSaltGenerator
もZeroSaltGenerator
役に立ちません。本番サーバーを別のマシンに移行した場合、または本番前のデータを本番データで更新した場合、情報を回復するのに数百万年かかる可能性があるため、これは問題を引き起こします。
セキュリティ部門は、社内ソリューションを作成するのではなく、よく知られたライブラリを使用することを望んでいます。jasypt 256ビット暗号化を使用して異なるマシン間で復号化できる暗号化された文字列を生成する方法、または本番前のデータベースを本番データで更新するとき、名前を回復する方法などについて、この問題に光を当ててください。別のサーバーを介して暗号化されたものですか?
有益な洞察をいただければ幸いです。