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: xiaobaodata:mongodb:host: 192.27.52.13port: 30010username: iotpassword: ENC(3mVqabPOmvndddddVQ22tpeUNkB01tFT) #需要机密的配置需要增加ENC前缀authentication-database: gasdatabase: 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();//加密所需的salttextEncryptor.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;}
}