Spring 3.1およびHibernate 4.0.1でJasypt-1.9.0を使用しています。アプリケーション内のプロパティ ファイルに暗号化された形式でパスワード (ルート) が格納されているデータベースに接続する必要があります。
私はオンラインで見て、次のリンクで方法を見つけました:
要件に合わせて、次の手順と構成を実行しました。
- ビルド パスにjasypt-1.9.0とjasypt-hibernate4 -1.9.0 を追加しました。
- 私のディスパッチャーサーブレットファイルに以下を追加しました:
< bean id="propertyConfigurer"
class="org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer">
< constructor-arg ref="configurationEncryptor" />
< property name="locations">
< list>
< value>classpath:database.properties< /value>
< /list>
< /property>
< /bean>
< bean id="configurationEncryptor"
class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
< property name="config" ref="environmentVariablesConfiguration" />
< /bean>
< bean id="environmentVariablesConfiguration"
class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
< property name="algorithm" value="PBEWithMD5AndDES" />
< property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" />
</bean>
- Jasypt 1.9.0 の CLI ツールを使用して、以下のパスワードを生成しました (添付の CLI のスナップショット)。
- rootとしての値を持つAPP_ENCRYPTION_PASSWORD として新しい環境変数を追加しました
- database.properties ファイルに暗号化されたパスワードを追加しました
db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/db1
db.username=root
db.password=ENC(bmfeQmgP/hJrh+mj6NANKA==)
ここで、アプリケーションを実行すると、次の例外が表示されます。
org.jasypt.exceptions.EncryptionOperationNotPossibleException
at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.decrypt(StandardPBEByteEncryptor.java:981)
at org.jasypt.encryption.pbe.StandardPBEStringEncryptor.decrypt(StandardPBEStringEncryptor.java:725)
at org.jasypt.properties.PropertyValueEncryptionUtils.decrypt(PropertyValueEncryptionUtils.java:72)