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

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

    这里有个解决方案

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

     

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

     

  • 相关阅读:
    bootloader
    Arm中的c和汇编混合编程
    Linux学习笔记(一)
    java按所需格式获取当前时间
    java 串口通信 rxtx的使用
    Tomcat数据库连接池
    面试
    复习 模拟call apply
    复习 js闭包
    复习js中的原型及原型链
  • 原文地址:https://www.cnblogs.com/yangzhuxian/p/14339604.html
Copyright © 2020-2023  润新知