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

  • 相关阅读:
    C#变量
    C#数据类型、标识符和关键字
    【算法】Hough变换
    RANSAC 剔除错误匹配 估计模型
    【Hector slam】A Flexible and Scalable SLAM System with Full 3D Motion Estimation
    【排序】插入排序:最稳定:时间复杂度O(n^2)
    【matlab】查看程序运行时间
    【matlab】合并两个cell
    【matlab】膨胀
    【ros】.bag文件
  • 原文地址:https://www.cnblogs.com/paidaxing7090/p/14217557.html
Copyright © 2011-2022 走看看