EncryptionOperationNotPossibleException在集成测试中但不在应用程序中

时间:2016-03-30 18:14:14

标签: java spring spring-boot bouncycastle jasypt

我在Spring Boot应用程序中使用Jasypt和Bouncycastle。我可以运行我的应用程序,并在数据库中添加加密的东西。

但是,在运行单元测试时,我得到:

  

org.jasypt.exceptions.EncryptionOperationNotPossibleException:加密引发了异常。可能的原因是您使用的是强加密算法,并且尚未在此Java虚拟机中安装Java Cryptography Extension(JCE)无限强度管辖权策略文件

为什么它适用于我的应用程序而不是集成测试(加载与应用程序相同的弹簧配置)?我使用标准的Oracle Java 1.8.0_66从IntelliJ IDEA运行。

我正在使用PBEWithSHA256And256BitAES-CBC-BC算法。

1 个答案:

答案 0 :(得分:3)

Java的默认最大强度为128位。

您需要的是一组名为 Java密码术扩展(JCE)无限强度管辖权政策文件的文件,目前可在Java SE download page获取。此zip文件包含几个策略jar,您需要将其复制到JRE的 {java.home} / jre / lib / security 目录中的那些策略jar的顶部。

这样可以将密钥强度更改为高于128位

<强>更新

对于Java 8,它将取决于类路径。如果存在其中一个JCE jar(local_policy.jarUS_export_policy.jar),则启用JCE无限加密。也许Spring Boot应用程序已满足此依赖性,但您的测试没有。

可以找到JCE jars for Java 8 here