我在Spring Boot应用程序中使用Jasypt和Bouncycastle。我可以运行我的应用程序,并在数据库中添加加密的东西。
但是,在运行单元测试时,我得到:
org.jasypt.exceptions.EncryptionOperationNotPossibleException:加密引发了异常。可能的原因是您使用的是强加密算法,并且尚未在此Java虚拟机中安装Java Cryptography Extension(JCE)无限强度管辖权策略文件
为什么它适用于我的应用程序而不是集成测试(加载与应用程序相同的弹簧配置)?我使用标准的Oracle Java 1.8.0_66从IntelliJ IDEA运行。
我正在使用PBEWithSHA256And256BitAES-CBC-BC
算法。
答案 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.jar
或US_export_policy.jar
),则启用JCE无限加密。也许Spring Boot应用程序已满足此依赖性,但您的测试没有。
可以找到JCE jars for Java 8 here