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.补充

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

    这里有个解决方案

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

     

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

     

  • 相关阅读:
    CodeForces
    bzoj 2257: [Jsoi2009]瓶子和燃料
    【NOIP2009】Hankson 的趣味题
    51Nod 1203 JZPLCM
    bzoj 3751: [NOIP2014]解方程
    UOJ #11. 【UTR #1】ydc的大树
    Tenka1 Programmer Contest D
    bzoj 5000: OI树
    bzoj 1407: [Noi2002]Savage
    bzoj 3551: [ONTAK2010]Peaks加强版
  • 原文地址:https://www.cnblogs.com/yangzhuxian/p/14339604.html
Copyright © 2011-2022 走看看