zoukankan      html  css  js  c++  java
  • springboot中给属性文件内容加密(application.properties,application.yml)

    1.加密所有用的技术 jasypt

      目的:为项目增加加密功能,为安全多一层保障

      原理:在启动项目读取配置文件时,给加密的属性解密

    2.实现

    引入依赖

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

    配置,在属性文件中加入,之后会根据盐值解密

    jasypt.encryptor.password=盐值

    3.手动将需要加密的属性加密

    我这里实在springboot单元测试中运行

    这里的盐值就是写在属性文件中的盐值

    @Test
    public void getPass() {
    BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
    textEncryptor.setPassword("yangzhuxian@test");
    //加密
    String host = textEncryptor.encrypt("yang***aa**.***");
    String port = textEncryptor.encrypt("6000");
    System.out.println("加密后"+host);
    System.out.println("加密后"+port);
    //解密
    String decrypt = textEncryptor.decrypt(host);
    System.out.println("解密后"+decrypt);
    }

    结果:

    注意:每次加密的值都是不一样的,解密后都是一样的

     4.将加密后的结果写入属性文件(完成)

    ENC():这是jasypt设置默认的标识,作用是在读取配置文件时,判断哪些属性需要解密后读取。

    ENC()是可以更改的,这里不演示,有需要的可以研究一下jasypt的属性配置

     5.补充

    到这里肯定会有人觉得将盐值放在属性文件里面是不安全的。

    这里有个解决方案

      将盐值作为项目启动时的参数传入

     

     项目部署时也可以将盐值传入

     

  • 相关阅读:
    面试java_后端面经_5
    头条后端面经_1面
    面试java后端面经_2
    java后端开发面经 数据库相关
    用友java后端开发面经
    面试java后端面经_4
    维恩贝特面试JAVA后台开发
    面试java后端面经_3
    世纪龙校招java开发一、二面 面经
    AndroidWebView使用
  • 原文地址:https://www.cnblogs.com/yangzhuxian/p/14339604.html
Copyright © 2011-2022 走看看