spring cloud 中使用jasypt-spring-boot-starter 配合Nacos进行配置加密

引入pom

<!-- jasypt 配置文件敏感信息加解密 -->
	<dependency>
		<groupId>com.github.ulisesbocchio</groupId>
		<artifactId>jasypt-spring-boot-starter</artifactId>
		<version>3.0.3</version>
	</dependency>

数据加密

 public static String encryptWithSHA512(String plainText, String factor) {
        // 1. 创建加解密工具实例
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        // 2. 加解密配置
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword(factor);
        config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
        // 为减少配置文件的书写,以下都是 Jasyp 3.x 版本,配置文件默认配置
        config.setKeyObtentionIterations( "1000");
        config.setPoolSize("1");
        config.setProviderName("SunJCE");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
        config.setStringOutputType("base64");
        encryptor.setConfig(config);
        // 3. 加密
        return encryptor.encrypt(plainText);
    }

Nacos中配置

auth=ENC(gaAuVVD5qwYnI3/AKHGczgjxmrae9AzYE7kEsIJ7oksX4R+IwQp+6l32LmDBcIXi)

在这里插入图片描述

解密password配置

idea配置

-Djasypt.encryptor.password=123456
编辑application配置

在这里插入图片描述

配置vm参数

在这里插入图片描述

配置文件中配置

在这里插入图片描述

jar启动配置方式

Java -jar xxx.jar -Djasypt.encryptor.password=123456

验证

验证代码

@Slf4j
@Api("测试")
@RestController
@RequestMapping("test")
public class TestController {

    @Value("${auth}")
    private String auth;
    @GetMapping("/auth")
    public String auth() {
        return auth;
    }
}

验证返回结果

在这里插入图片描述

配置说明

2021-07-08 16:00:01.918  INFO 48940 --- [           main] c.u.j.c.StringEncryptorBuilder           : Encryptor config not found for property jasypt.encryptor.algorithm, using default value: PBEWITHHMACSHA512ANDAES_256
2021-07-08 16:00:01.918  INFO 48940 --- [           main] c.u.j.c.StringEncryptorBuilder           : Encryptor config not found for property jasypt.encryptor.key-obtention-iterations, using default value: 1000
2021-07-08 16:00:01.919  INFO 48940 --- [           main] c.u.j.c.StringEncryptorBuilder           : Encryptor config not found for property jasypt.encryptor.pool-size, using default value: 1
2021-07-08 16:00:01.920  INFO 48940 --- [           main] c.u.j.c.StringEncryptorBuilder           : Encryptor config not found for property jasypt.encryptor.provider-name, using default value: null
2021-07-08 16:00:01.920  INFO 48940 --- [           main] c.u.j.c.StringEncryptorBuilder           : Encryptor config not found for property jasypt.encryptor.provider-class-name, using default value: null
2021-07-08 16:00:01.921  INFO 48940 --- [           main] c.u.j.c.StringEncryptorBuilder           : Encryptor config not found for property jasypt.encryptor.salt-generator-classname, using default value: org.jasypt.salt.RandomSaltGenerator
2021-07-08 16:00:01.922  INFO 48940 --- [           main] c.u.j.c.StringEncryptorBuilder           : Encryptor config not found for property jasypt.encryptor.iv-generator-classname, using default value: org.jasypt.iv.RandomIvGenerator

可在配置文件中自定义修改

  • 默认加密算法 jasypt.encryptor.algorithm, using default value: PBEWITHHMACSHA512ANDAES_256
  • 默认的迭代次数 jasypt.encryptor.key-obtention-iterations, using default value: 1000
  • 默认池大小jasypt.encryptor.pool-size, using default value: 1
  • 默认生成盐的类:org.jasypt.salt.RandomSaltGenerator
  • 默认IV生成器类:org.jasypt.iv.RandomIvGenerator
  • 默认IV生成器类:org.jasypt.iv.RandomIvGenerator

异常

异常信息

Exception in thread "main" org.jasypt.exceptions.EncryptionOperationNotPossibleException: Encryption raised an exception. A possible cause is you are using strong encryption algorithms and you have not installed the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files in this Java Virtual Machine
	at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.handleInvalidKeyException(StandardPBEByteEncryptor.java:1207)
	at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.encrypt(StandardPBEByteEncryptor.java:996)
	at org.jasypt.encryption.pbe.StandardPBEStringEncryptor.encrypt(StandardPBEStringEncryptor.java:655)
	at org.jasypt.encryption.pbe.PooledPBEStringEncryptor.encrypt(PooledPBEStringEncryptor.java:465)
	at com.zuoja.mall.farm.JasypUtil.encryptWithSHA512(JasypUtil.java:78)
	at com.zuoja.mall.farm.JasypUtil.main(JasypUtil.java:112)

异常原因

因为某些国家的进口管制限制,JDK默认对加解密有一定的限制,默认不能使用256长度秘钥加解密。

解决方案

解决方法就下载官方JCE无限制强度加密策略文件,将Java\jdk1.8.0_77\jre\lib\security\路径下的local_policy.jar和US_export_policy.jar覆盖即可。

官方网站提供了JCE无限制权限策略文件的下载:

操作步骤
  • 下载
    在这里插入图片描述
    在这里插入图片描述

  • 替换
    找到java 安装目录jre/lib/security替换local_policy.jar和US_export_policy.jar
    在这里插入图片描述

如果还报错就把jdk下面jre/lib/security替换local_policy.jar和US_export_policy.jar也替换

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值