springboot笔记示例八:yml文件数据库连接redis密码加密实现使用jasypt加密
本文md文件下载
https://download.csdn.net/download/a254939392/89496228
点击下载本文md文件
说明
springboot中大多数配置我们都采用yml文件配置,比如数据库连接,redis连接,等明文,存在安全风险,所以需要在yml文件中使用加密。本文采用开源jasypt加密实现该功能
pom引入
<!--2.1.1 与3版本默认算法有所改变-->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
yml加密配置
> yml配置
```yaml
jasypt:
encryptor:
password: 123456 #salt盐值
algorithm: PBEWithMD5AndDES #加密算法,3.x版本需要配置,2.x版本不需要配置
iv-generator-classname: org.jasypt.iv.NoIvGenerator #固定配置
spring:
application:
name: xiaobao
data:
mongodb:
host: 192.27.52.13
port: 30010
username: iot
password: ENC(3mVqabPOmvndddddVQ22tpeUNkB01tFT) #需要机密的配置需要增加ENC前缀
authentication-database: gas
database: gas
使用boot-starter 只需要pom依赖和yaml配置即可。
生成密钥工具类
package com.example.scengine.utils;
import org.jasypt.util.text.BasicTextEncryptor;
/**
* jasypt-spring-boot-starter 生成密文的工具代码
*/
public class EncryptConfigUtil {
public static String salt="123456";
public static void main(String[] args) {
String password = EncryptConfigUtil.jasyptEncrypt("root);
String pwd = EncryptConfigUtil.jasyptDecrypt("3mVqabPOmvnXc7IFVQ22tpeUNkB01tFT");
}
/**
* 加密
*
* @return
*/
public static String jasyptEncrypt(String encryptString) {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
//加密所需的salt
textEncryptor.setPassword(salt);
//要加密的数据(数据库的用户名或密码)
String password = textEncryptor.encrypt(encryptString);
System.out.println("加密后:" + password);
return password;
}
/***
* 解密
* @param encryptString
* @return
*/
public static String jasyptDecrypt(String encryptString) {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
textEncryptor.setPassword(salt);
String pwd = textEncryptor.decrypt(encryptString);
System.out.println("解密后:" + pwd);
return pwd;
}
}