前言
在项目开发中一般数据库连接信息,还有一些必要的配置信息都会配置在application.properties或者yml文件中,对于一些敏感信息例如密码、用户名等明文的话可能会出现安全隐患,所以一般都会进行加密,今天介绍一种加密方式——jasypt。
引入jar包
对于springboot项目使用@SpringBootApplication注解自动配置启动的可以直接在pom文件引入下面的包
<!--jasypt配置文件脱敏-->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
如果未使用@SpringBootApplication自动配置的还需引入下边jar包
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot</artifactId>
<version>3.0.3</version>
</dependency>
配置文件配置
引入jasypt后需在配置文件增加jasypt的加解密密码配置
#jasypt配置
jasypt:
encryptor:
password: 自定义字符串
加密
以数据库连接名密码为例进行加密,下边为加密方法
public static void main(String[] args) {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
//加密所需的salt(为上边配置文件中配置的密码)
textEncryptor.setPassword("QWHJKhjhkjkj123jhuEHU");
//要加密的数据(数据库的用户名或密码)
String username = textEncryptor.encrypt("root");
String password = textEncryptor.encrypt("123456");
//加密后数据
System.out.println("username:"+username);
System.out.println("password:"+password);
}
运行结果如下
以上为加密过程,然后将加密后的结果写进配置文件,替换原来的明文数据,要注意用ENC()包括起来
#mysql属性配置
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: ENC(加密后内容)
username: ENC(加密后内容)
password: ENC(加密后内容)
#jasypt配置
jasypt:
encryptor:
password: 自定义字符串
解密
以上为加密过程,若想查看原始数据可以对数据进行解密,过程如下
public static void main(String[] args) {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
//加密所需的salt(盐)
textEncryptor.setPassword("QWHJKhjhkjkj123jhuEHU");
//要加密的数据(数据库的用户名或密码)
String username = textEncryptor.encrypt("root");
String password = textEncryptor.encrypt("123456");
//加密后数据
System.out.println("username:"+username);
System.out.println("password:"+password);
//对加密后内容解密
String decrypt = textEncryptor.decrypt(username);
String decrypt1 = textEncryptor.decrypt(password);
System.out.println(decrypt);
System.out.println(decrypt1);
}
运行结果如下
解密成功。
结束语
配置文件中一些关键内容脱敏在项目中遇到过,最后采用了jasypt,所以简单进行一下记录
版权声明:本文为weixin_37783650原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。