zoukankan      html  css  js  c++  java
  • springboot应用配置文件中密码加密

    数据库密码直接明文写在配置中,对安全来说,是一个很大的挑战。一旦密码泄漏,将会带来很大的安全隐患。尤其在一些企业对安全性要求很高,因此我们就考虑如何对密码进行加密。本文着重介绍Jasypt对SpringBoot配置文件加密。
    引入依赖:

             <dependency>
                <groupId>com.github.ulisesbocchio</groupId>
                <artifactId>jasypt-spring-boot-starter</artifactId>
                <version>3.0.3</version>
            </dependency>
    

    生成密文:

     public static void main(String[] args) {
            BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
            //加密所需的salt(盐)
            textEncryptor.setPassword("Bt%XJ^n1j8mz");
            //要加密的数据(数据库的用户名或密码)
            String username = textEncryptor.encrypt("toutou");
            String password = textEncryptor.encrypt("demo123456");
            System.out.println("username:"+username);
            System.out.println("password:"+password);
        }
    

    将配置文件中数据库的密码替换成 ENC(密文):

    # 加密所需的salt(盐)
    #jasypt.encryptor.password=Bt%XJ^n1j8mz
    # 默认加密方式PBEWithMD5AndDES,可以更改为PBEWithMD5AndTripleDES
    #jasypt.encryptor.algorithm=PBEWithMD5AndDES
    spring.datasource.username=ENC(d/qt1SXvttpkiugIzTYkxg==)
    spring.datasource.password=ENC(rhT6VNpoRUkQYYOHAQ58V4/+fkj9CWfT)
    

    盐也在配置文件中,现在做到了一眼看不出明文,但是拿到盐 再通过相同的算法还是可以解密的,毕竟算法都是依赖中的那一套。
    为了解决这个问题,可以启动jar包的时候 再加参数 java -jar xxx.jar --jasypt.encryptor.password=Bt%XJ^n1j8mz
    不过应该还可以通过其他方法获取jasypt.encryptor.password,例如actutor端点。

  • 相关阅读:
    算法笔记 --- Selection Sort
    算法笔记 --- Radix Sort
    算法笔记 --- Quick Sort
    算法笔记 --- Merge Sort
    算法笔记 --- Insertion Sort
    算法笔记 --- Heap Sort
    算法笔记 --- Counting Sort
    算法笔记 --- Bubble Sort
    算法笔记 --- Tree Travers
    javaweb_JDBC
  • 原文地址:https://www.cnblogs.com/paidaxing7090/p/14217557.html
Copyright © 2011-2022 走看看