zoukankan      html  css  js  c++  java
  • 使用Jasypt对SpringBoot配置文件加密(转)

    文章转自   https://www.jianshu.com/p/323ec96c46d2

    引入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");(decrypt这个的解密方法)
            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中

    # 加密所需的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



    作者:风静花犹落
    链接:https://www.jianshu.com/p/323ec96c46d2
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    使用C++ 实现的 websocket 客户端 (基于easywsclient)
    ant打包报错 JRE version less than 1.8 is not suppored
    离线安装SVN 4.2.3
    maven项目使用oracle11g
    springboot 新工程报错 Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
    IP与域名绑定
    web项目如果省略端口
    Linux源码安装Python3.7服务
    Linux yum软件包安装、管理与使用
    RPM软件包管理与使用
  • 原文地址:https://www.cnblogs.com/shuaiandjun/p/10735864.html
Copyright © 2011-2022 走看看