springboot yml配置文件数据库密码加密

为了安全考虑,公司打算将yml配置文件中的数据库连接信息的账号,密码进行加密!

 

1.了解到 常用的加密方式:

  spring boot整合Jasypt实现yml配置文件敏感信息加密

  SpringBoot使用Druid密码加密/解密

       Springboot druid数据库密码加密配置步骤(多数据源参考配置)

1.1使用druid 如何进行解密 

  1. 创建一个DesPassword类写main方法,继承druid中的DruidPasswordCallback类。
  2. 在main方法中引用ConfigTools.decrypt(publickey, password)方法,填入已知的公钥和密码。
  3. 打印结果,done
     
    import com.alibaba.druid.filter.config.ConfigTools;
    import com.alibaba.druid.util.DruidPasswordCallback;
     
     
     
    public class DesPassword extends DruidPasswordCallback {
     
        public static void main(String[] args) throws Exception{
            String publickey = 填入公钥;
            String password = 填入密码;
            String pwd = ConfigTools.decrypt(publickey, password);
     
            System.out.println(pwd);
        }
    }

2.Druid加密具体的操作

  2.1 测试类中生成公私钥 加密密文。

  

 

  • 123456为未加密的数据库密码
  • privateKey为生成的私钥
  • publicKey为生成的公钥
  • password为加密后的数据库密码

 以上的公钥和密码钥,要特别注意,解密的话是用这两个进行解密

  2.2 配置数据库加密 ,yml中将password修改为第一步生成的密文,配置 connectionProperties,启用加密,配置公钥

  

 

   2.3 ,配置过滤器 config

   

 

 3.多个数据源重复,2.1,2.2

 

配置Druid出现:java.lang.IllegalArgumentException: Failed to decrypt. 

  publickey 不用表达式 指向 直接赋值

 

 

 3.使用jasypt

jasypt版本和springBoot版本之间的对应关系如下:

  • SpringBoot2.1.x 对应使用 jasypt2.10
  • SpringBoot1.5.x 对应使用 jasypt1.5

阿里元:SpringBoot 使用Jasypt加密配置

 对spring boot yml配置文件敏感信息加密处理的两种方式

 

参考:

对spring boot yml配置文件敏感信息加密处理的两种方式

springboot yml数据库密码加密的两种方式

给yml配置文件的密码加密(SpringBoot)

Springboot druid数据库密码加密配置步骤(多数据源参考配置)

Druid配置数据库加密(SpringBoot)

 

踩坑注意

当数据库使用特殊符号为密码时,无法使用加密 会解密失败,如!@#¥%……&* 等

经检验这两个是可以的,源码里解密过程使用了final 咱们无法去修改它,所以如果要使用Druid来加密数据库密码,就不要使用特殊符号拉。

该问题倒腾了好久,最后经过不断的测试终于找到了问题。网上几乎找不到解决方案和加密说明。所以就写下来记录一下!

 

posted @ 2022-09-28 14:47  BBS_自律  阅读(2912)  评论(0)    收藏  举报