首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >org.jasypt.exceptions.EncryptionOperationNotPossibleException

org.jasypt.exceptions.EncryptionOperationNotPossibleException
EN

Stack Overflow用户
提问于 2013-03-21 09:57:33
回答 5查看 54.3K关注 0票数 15

我使用的是Jasypt-1.9.0Spring3.1Hibernate 4.0.1。在我的应用程序中,我需要连接到其密码(Root)以加密形式存储在应用程序中的属性文件中的数据库。

我在网上查了一下,找到了以下链接:

  1. http://www.jasypt.org/spring31.html
  2. http://www.jasypt.org/hibernate.html
  3. http://www.jasypt.org/encrypting-configuration.html

我已经为我的需求完成了以下步骤和配置:

  • 在构建路径中添加了jasypt-1.9.0jasypt-hibernate4-1.9.0。
  • 在我的dispatcher-servlet文件中添加了以下内容:
代码语言:javascript
运行
复制
< 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>
  • 使用Jasyp1.9.0的CLI工具, i生成了下面的密码(随附的快照)

  • 添加了一个新的环境Varibale为APP_ENCRYPTION_PASSWORD,值作为
  • database.properties文件中添加加密密码
代码语言:javascript
运行
复制
db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/db1
db.username=root
db.password=ENC(bmfeQmgP/hJrh+mj6NANKA==)

现在,如果我运行我的应用程序,将出现以下异常:

代码语言:javascript
运行
复制
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)
EN

回答 5

Stack Overflow用户

发布于 2014-07-29 07:57:10

这个问题很可能已经过时了,但对于未来的探索者来说.EncryptionOperationNotPossibleException是jasypt引发的一般异常,以掩盖其他可能的异常。此异常可在下列情况下发生:

  • 您的jdk没有安装JCE无限强度(最常见的情况)。
  • 数据库中有一些以前用其他密码加密的数据。
  • 数据库中有一些以前没有加密的数据,并且将加密添加到某些字段中。
  • jasypt未能从db解密加密值,原因是数据出现了一些奇怪的损坏。
  • 很多其他的,你只需要调试,找出真正的原因。
票数 20
EN

Stack Overflow用户

发布于 2020-03-03 13:55:07

如果在加密过程中不指定所有参数,Jasypt将使用默认值。确保在解密期间使用这些确切的默认值。否则你可能有麻烦..。

这是我的工作:

代码语言:javascript
运行
复制
mvn jasypt:encrypt -Djasypt.encryptor.password='secret' \
    -Djasypt.encryptor.algorithm=PBEWITHHMACSHA512ANDAES_256 \
    -Djasypt.encryptor.iv-generator-classname=org.jasypt.iv.RandomIvGenerator \
    -Djasypt.encryptor.salt-generator-classname=org.jasypt.salt.RandomSaltGenerator \
    -Djasypt.encryptor.key-obtention-iterations=1000  \
    -Djasypt.plugin.path='file:application.yml' 
代码语言:javascript
运行
复制
mvn jasypt:decrypt -Djasypt.encryptor.password='secret' \
    -Djasypt.encryptor.algorithm=PBEWITHHMACSHA512ANDAES_256 \
    -Djasypt.encryptor.iv-generator-classname=org.jasypt.iv.RandomIvGenerator \
    -Djasypt.encryptor.salt-generator-classname=org.jasypt.salt.RandomSaltGenerator \
    -Djasypt.encryptor.key-obtention-iterations=1000  \
    -Djasypt.plugin.path='file:application.yml' 
票数 3
EN

Stack Overflow用户

发布于 2017-10-23 07:08:56

在加密属性文件值时,我也遇到了类似的问题。我在本地Windows机器中加密了值,并试图部署在Linux中,但是JRE版本是不同的,因此加密的值无法解密。但我对Linux机器中的值进行了加密,解密成功了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15544266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档