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

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

    这里有个解决方案

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

     

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

     

  • 相关阅读:
    IOS Application生命周期
    IOS ViewController 生命周期
    nsinteger 与 int 区别
    判断日期是昨天,今天,明天,后天,其他的显示星期
    改变图片颜色(灰色显示)
    Linux系统管理
    PHP 相关软件下载
    检查域名是否正确解析网站
    定时任务
    BZOJ 3534 [Sdoi2014]重建
  • 原文地址:https://www.cnblogs.com/yangzhuxian/p/14339604.html
Copyright © 2011-2022 走看看