• jasypt 对 配置文件密码进行加密处理


    在我们的服务中不可避免的需要使用到一些秘钥(数据库、redis等)

    开发和测试环境还好,但生产如果采用明文配置讲会有安全问题,jasypt是一个通用的加解密库,我们可以使用它。

    1、引入jasypt

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

    生成要加密的字符串

    将数据库的用户名和密码进行加密

    public static void main(String[] args) {
            BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
            //加密所需的密钥
            textEncryptor.setPassword("G0CvDz7oJn6");
            //要加密的数据(数据库的用户名或密码)
            String username = textEncryptor.encrypt("root");
            String password = textEncryptor.encrypt("root123");
            System.out.println("username:"+username);
            System.out.println("password:"+password);
        }

    输出信息为:

    username:i8QgEN4uOy2E1rHzrpSTYA==
    password:6eaMh/RX5oXUVca9ignvtg==

    或者使用Maven下载好的jar包加密Mavenorgjasyptjasypt1.9.2jasypt-1.9.2.jar

    java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI password=G0CvDz7oJn6 algorithm=PBEWithMD5AndDES input=root

    输出信息为:

    ----ENVIRONMENT-----------------
    Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.171-b11
    
    ----ARGUMENTS-------------------
    input: root
    algorithm: PBEWithMD5AndDES
    password: G0CvDz7oJn6
    
    ----OUTPUT----------------------
    Gvkoz+sbFWiRe3ECtizV1A==

    拷贝-OUTPUT-下的结果即可

    配置properties文件

    将生成的加密串配置ENC(加密串)到application.properties中

    # 加密所需的密钥
    jasypt.encryptor.password=G0CvDz7oJn6
    # 默认加密方式PBEWithMD5AndDES,可以更改为PBEWithMD5AndTripleDES
    # jasypt.encryptor.algorithm=PBEWithMD5AndDES
    spring.datasource.username=ENC(6eaMh/RX5oXUVca9ignvtg==)
    spring.datasource.password=ENC(6eaMh/RX5oXUVca9ignvtg==)

    加密方式对应的类为BasicTextEncryptor和StrongTextEncryptor

    public BasicTextEncryptor() {
        super();
        this.encryptor = new StandardPBEStringEncryptor();
        this.encryptor.setAlgorithm("PBEWithMD5AndDES");
    }
    
    public StrongTextEncryptor() {
        super();
        this.encryptor = new StandardPBEStringEncryptor();
        this.encryptor.setAlgorithm("PBEWithMD5AndTripleDES");
    }

    部署时配置密钥值

    为了防止密钥泄露,反解出密码.可以在项目部署的时候使用命令传入密钥值

    java -jar -Djasypt.encryptor.password=G0CvDz7oJn6 xxx.jar

    或者在服务器的环境变量里配置,进一步提高安全性

    打开/etc/profile文件
    vim /etc/profile
    
    文件末尾插入
    export JASYPT_PASSWORD = G0CvDz7oJn6
    
    编译 
    source /etc/profile
    
    运行 
    java -jar -Djasypt.encryptor.password=${JASYPT_PASSWORD} xxx.jar
  • 相关阅读:
    CF-1328 F. Make k Equal
    CF-1328 E. Tree Queries
    USACO_1.1_Greedy_Gift_Givers_(模拟+水题)
    USACO_1.1_Your_Ride_Is_Here_(字符串+水题)
    第3章 文件系统
    BZOJ_1629_[Usaco2007_Demo]_Cow_Acrobats_(贪心)
    BZOJ_1628_[Usaco2007_Demo]_City_skyline_(单调栈)
    BZOJ_1030_[JSOI2007]_文本生成器_(AC自动机+DP)
    BZOJ_1029_[JSOI2007]_建筑抢修_(贪心+优先队列)
    BZOJ_1028_[JSOI2007]_麻将_(模拟+贪心)
  • 原文地址:https://www.cnblogs.com/zouhong/p/14549423.html
Copyright © 2020-2023  润新知