美文网首页Java 杂谈阿里云互联网科技
使用Jasypt对SpringBoot配置文件加密

使用Jasypt对SpringBoot配置文件加密

作者: 风静花犹落 | 来源:发表于2018-06-29 22:21 被阅读97次

    引入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();
            //加密所需的salt(盐)
            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包加密\Maven\org\jasypt\jasypt\1.9.2\jasypt-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中

    # 加密所需的salt(盐)
    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");
    }
    
    类图

    部署时配置salt(盐)值

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

    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
    
    

    官方地址 : https://github.com/ulisesbocchio/jasypt-spring-boot

    相关文章

      网友评论

      本文标题:使用Jasypt对SpringBoot配置文件加密

      本文链接:https://www.haomeiwen.com/subject/bxszyftx.html