天天看点

SpringBoot集成jasypt对数据库账号和密码加密处理

目录

1. 概述

2. 将账号和密码处理成密文

2.1 引入jasypt的pom依赖

2.2 生成密文

2.3 将密文写到配置文件中

3. 参考资料

1. 概述

在开发项目时,访问数据库的账号和密码,有时是需要加密后写在配置文件中的,这时候可以使用springboot + jasypt来轻松实现。

2. 将账号和密码处理成密文

2.1 引入jasypt的pom依赖

项目中使用的springboot版本是2.1.8,使用的jasypt版本是2.1.2,如下

        <!--配置文件加解密依赖 -->
        <dependency>
            <groupId>com.github.ulisesbocchio</groupId>
            <artifactId>jasypt-spring-boot-starter</artifactId>
            <version>2.1.2</version>

       </dependency>
           

2.2 生成密文

例如我们的账号是

yourName/yourPwd

经过下面的代码加密处理

import org.jasypt.util.text.BasicTextEncryptor;


//对账号和密码进行加密处理
public void run() {
    BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
    //加密所需的salt(盐)
    textEncryptor.setPassword("com.fragrans");
    //要加密的数据(数据库的用户名和密码密码)
    String username = textEncryptor.encrypt("yourName");
    String password = textEncryptor.encrypt("yourPwd");
    System.out.println("uName:" + username + "=>" + textEncryptor.decrypt(username));
    System.out.println("uPwd:" + password + ">" + textEncryptor.decrypt(password));
}
           

2.3 将密文写到配置文件中

在application.yml填上参数配置:

## 数据库密码加密配置
jasypt:
  encryptor:
    password: com.dac
           

将db账号和密码的密文写入到配置文件中

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      #MySQL配置
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      username: ENC(adf4rFfxcxoZZadferXBR==)
      password: ENC(deh345h72GjD+6ytruid0BVfdgjs)
           

如上面的

      username: ENC(adf4rFfxcxoZZadferXBR==)

      password: ENC(deh345h72GjD+6ytruid0BVfdgjs)

注意:要将加密后的密文,放到ENC()的括号里,只有这样才会生效

3. 参考资料

https://www.cnblogs.com/july-sunny/p/12248552.html