您的位置 首页 java

jasypt加密配置文件

1. 什么是 jasypt

Jasypt 是一个 Java 库,它允许开发人员以最少的努力为他/她的项目添加基本的加密功能,而无需深入了解 密码学 的工作原理

  • 高安全性、基于标准的加密技术,适用于单向和双向加密。加密密码、文本、数字、二进制文件
  • 适合集成到基于 Spring 的应用程序中
  • 用于加密应用程序(即数据源)配置的集成功能

2. 使用

2.1 添加依赖

 <!--  场景启动器不用使用 @EnableEncryptableProperties 注解来开启功能  -->
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>
  

2.2 加密

 // 自己写一个加密工具类
// 记下密钥、密文,使用完工具类则立马删除该工具类
public class jasyptUtil {
    // 密钥
     private   static  final String SECRET_KEY = "YOUR_SECRET_KEY";

    // 加密
    private static  void  encrypt() {
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        encryptor.setPassword(SECRET_KEY);
        System.out.println("username: " + encryptor.encrypt(" root "));
        System.out.println("password: " + encryptor.encrypt("123456"));
       
    }

    // 解密
    private static void decrypt() {
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        encryptor.setPassword(SECRET_KEY);
        System.out.println("username: " + encryptor.decrypt("E+izLflKlT+IvffuKpbJlg=="));
        System.out.println("password: " + encryptor.decrypt("YelRk+rlONRKAvgaoHKy+Q=="));
    }

    // 每次加密输出都不一样,因有随机数的参与,但是能解密出相同的数据
    public static void main(String[] args) {
        // E+izLflKlT+IvffuKpbJlg==
        // YelRk+rlONRKAvgaoHKy+Q==
        encrypt();
        
        // root
        // 123456
        decrypt();
    }
}
  

2.3 使用

 # 将配置文件中的明文敏感数据用 ENC(密文) 替换
spring:
  application:
    name: jasypt-test
  datasource:
    username: ENC(E+izLflKlT+IvffuKpbJlg==)
    password: ENC(YelRk+rlONRKAvgaoHKy+Q==)
  

2.4 项目启动

 java -jar xxx.jar -Djasypt.encryptor.password=YOUR_SECRET_KEY  

3. 原理

知道原理才懂得 jasypt 是怎么加密才不泄露的

3.1 PBE加密

我们使用 PBE 进行加密,其加密过程为:明文 + 密钥 + 随机盐值 => 密文,所以密文和密钥不能存放在一处

随机盐值在 jasypt 运行中可获取的,那么我们只要取得密钥就可以解密数据

所以密钥的存放十分重要,在上面项目启动过程中,只要启动项目的运维人员不泄露密钥,那么数据就是安全的

3.2 密钥处理

上面将密钥作为启动参数传入,还有一种密钥处理方式就是放入 系统变量

3.2.1 添加系统变量

 vim /etc/profile
 export  jasypt.encryptor.password=YOUR_SECRET_KEY
  

3.2.2 获取系统变量

 @SpringBootApplication
public class JasyptApplication {

    public static void main(String[] args) {
        SpringApplication.run(JasyptApplication.class, args);
        
        // 从系统变量中获取密钥,再放入环境变量
        System.setProperty("jasypt.encryptor.password", System.getenv("jasypt.encryptor.password"));
    }
}  

来源:

文章来源:智云一二三科技

文章标题:jasypt加密配置文件

文章地址:https://www.zhihuclub.com/190230.shtml

关于作者: 智云科技

热门文章

网站地图