栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

SpringBoot集成jasypt对配置文件中重要的属性加密

Java 更新时间:发布时间: 百科书网 趣学号
背景

在系统的使用时,配置文件中一些重要的信息为了安全,需要对其进行加密保存,比如数据库密码不能使用明文保存在配置文件,需要进行加密之后再保存。SpringBoot可以使用jasypt来为重要的配置属性提供加解密的支持。

spring-boot集成jasypt

SpringBoot项目,直接通过引入jasypt-spring-boot-starter,jasypt使用与自己SpringBoot项目对应的版本


	com.github.ulisesbocchio
	jasypt-spring-boot-starter
	3.0.3

添加一个maven的插件,这个插件可以帮助我们加密我们需要的明文信息。


	com.github.ulisesbocchio
	jasypt-maven-plugin
	3.0.3

然后执行mvn命令,可以在控制台得到对应的密文。将配置文件中明文替换为加密后的密文。

mvn jasypt:encrypt-value -Djasypt.encryptor.password=yuorPassword -Djasypt.plugin.value=root

-Djasypt.encryptor.password:类似于加密的密钥
-Djasypt.plugin.value:需要加密的明文参数。

执行命令后,在控制台可以看到加密后的密文,密文默认是用ENC()格式包围住的,这个格式也可以自定义。
注意:使用默认的JDK8时可能会出现JCE的问题:Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy,原因是Java密码术扩展(JCE)无限强度管辖权策略,
解决办法:
https://www.oracle.com/technetwork/cn/java/javase/downloads/jce8-download-2133166-zhs.html
去官网下载JCE压缩包,找到jre下的security的目录:%JAVA_HOME%jrelibsecurity,备份原来的文件,替换成下载的压缩包中的文件。

也可以通过这个mvn插件解密,执行如下命令,可以在控制台看到解密之后的明文。

mvn jasypt:decrypt-value -Djasypt.encryptor.password=yuorPassword -Djasypt.plugin.value=ENC(20IDlU5b4uyj3QTp4dH6fMEbH53B+LW9hhYfe3z4y/8glojojnA0d72JNZBTEaRP)

在项目配置文件中,把刚刚加密得到的密文替换原明文即可。

为了完全,把jasypt的password和配置文件中的密文分开保存

	@Bean("jasyptStringEncryptor")
    public StringEncryptor jasyptStringEncryptor() {
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword("yuorPassword");
        config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
        config.setKeyObtentionIterations("1000");
        config.setPoolSize("1");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
        config.setStringOutputType("base64");
        encryptor.setConfig(config);
        return encryptor;
    }

其中参数可参照加密明文时打印的日志信息。
最后说一下自定义解密前后缀,在配置文件中添加以下配置,以yaml为例

jasypt:
  encryptor:
    property:
      prefix: "ENC@("
      suffix: ")"
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/956863.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号