java中使用jasypt进行项目配置文件加解密

前言

在项目开发中一般数据库连接信息,还有一些必要的配置信息都会配置在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版权协议,转载请附上原文出处链接和本声明。