SpringBoot+jasypt-spring-boot-starter实现配置文件明文加密

1.使用环境

springboot:2.1.4.RELEASE

JDK:8

jasypt-spring-boot-starter:3.0.2

2.引入依赖

bash 复制代码
!-- 配置文件加密 -->
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.2</version>
</dependency>


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.0.1</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

3.application.properties配置

bash 复制代码
server.port=8080

### mybatis
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.xx.xx  

### xxl-job, datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxx?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=ENC(jGfd15IFYKMjMW5bUYp06BQ8OCdHTXi3zbD4j9tw6U3PPvvA5GS8zn10kgVmgxXY)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#加密盐值,获取加密后的值后删除,在vmOptions配置(如下图)
jasypt.encryptor.password=123adf

加密后,可删除jasypt.encryptor.password配置;发版时可在命令行中配置

4.明文加密

bash 复制代码
@SpringBootTest
@RunWith(SpringRunner.class)
public class D2ApplicationTests {

    @Resource
    private StringEncryptor jasyptStringEncryptor;
    @Test
    public void contextLoads() {
       String pwd =  jasyptStringEncryptor.encrypt("root");
        System.out.println("pwd:" + pwd);
    }

}

5.所遇问题

bash 复制代码
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

解决方案:java密码扩展无限制权限策略文件安装--jce_policy安装

文件下载地址:

下面为下载链接

JDK 1.7--jce安装地址:JDK1.7 -jce地址

JDK 1.8--jce安装地址:JDK 1.8--jce安装地址

相关文件来自于博客:https://www.cnblogs.com/zgngg/p/13859299.html) 感谢博主:疯狂的⑨酱 的无私奉献

jar配置路径:

JDK:将两个jar文件放到%JDK_HOME%\jre\lib\security下

JRE:将两个jar文件放到%JRE_HOME%\lib\security下

相关推荐
张彦峰ZYF7 分钟前
加了锁不等于扛得住争用:synchronized、显式锁与 CAS 的语义分层、争用代价账本与选型判据
后端·同步设施·内置锁的四种状态与单向升级·可重入的由来与四条硬边界·显式锁的状态字段与等待队列·读写锁与邮戳锁·一次同步的开销账本
专业程序开发源20 分钟前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计
Gopher_HBo21 分钟前
zap采样器与性能优化内幕
后端
变量探索SEQVEC21 分钟前
我埋了 8 个假文件,看谁会上钩:12 天 502 次扫描实录
后端
用户0942485680322 分钟前
第23章:OpenJDK逃逸分析、标量替换与锁优化
java·jvm
llqbzllll24 分钟前
HashMap 的核心结构:从一次 put 看到扩容、桶迁移与树化边界
后端
wuminyu24 分钟前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++
晚安code28 分钟前
设计模式入门:吃透 SOLID 原则与迪米特法则,再学 5 个高频模式
后端·设计模式
樱花落木兰35 分钟前
分布式登录实战:Session 会话共享改造,Redis 存储用户登录状态
java·javascript·数据库·redis·分布式·缓存
HAHAXX842 分钟前
电商RPA批量上架通用方案:一套流程如何同时跑通拼多多、抖店、淘宝和跨境平台
java·运维·rpa