I am using Jasypt-1.9.0 with Spring 3.1 and Hibernate 4.0.1. I have a requirement in my application to connect to database whose password(root) is stored in the encrypted form in the property file within the application.
I looked online and found the way with following links:
I have done following steps and configuration for my requirement:
- Added jasypt-1.9.0 and jasypt-hibernate4-1.9.0 in build path.
- Added following in my dispatcher-servlet file:
< 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>
- Using CLI tool of Jasypt 1.9.0, i have generated the password below(attached snapshot of CLI)
- Added the encrypted password in database.properties file
db.driverClassName=com.mysql.jdbc.Driver db.url=jdbc:mysql://localhost:3306/db1 db.username=root db.password=ENC(bmfeQmgP/hJrh+mj6NANKA==)
Now if i run my application, following exception appears:
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)
The question is most probably out of date, but for future seekers... EncryptionOperationNotPossibleException is a general exception thrown by jasypt to mask other possible exceptions. This exception can occur when:
- your jdk does not have the JCE unlimited strenght installed (most common case)
- you had some data in the database that was encrypted before with other password
- you had some data in database that were not encrypted before and you added encryption to some field
- jasypt failed to decrypt the encrypted value from db because of some strange corruption of data
- many many others, you just need to debug to find out the real cause..
I also experienced similar issue when encrypting property file values. I encrypted values in my local Windows machine and tried to deploy in Linux box but JRE versions were different, therefore encrypted values could not be decrypted. But I encrypted the values in Linux machine and decryption was successful.
来源:https://stackoverflow.com/questions/15544266/org-jasypt-exceptions-encryptionoperationnotpossibleexception