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端点。

  • 相关阅读:
    python的函数修饰符(装饰器)
    hdu1175连连看(dfs+细节)
    hdu2553N皇后问题(dfs,八皇后)
    hdu1045Fire Net(经典dfs)
    hdu1050Moving Tables(贪心)
    hdu2037今年暑假不AC(贪心,活动安排问题)
    hdu1052Tian Ji -- The Horse Racing(贪心,细节多)
    hdu1009FatMouse' Trade(贪心)
    hdu1455Sticks(经典dfs+剪枝)
    hdu2509Be the Winner(反nim博弈)
  • 原文地址:https://www.cnblogs.com/paidaxing7090/p/14217557.html
Copyright © 2011-2022 走看看