Spring Boot 3 集成 Jasypt详解

随着信息安全的日益受到重视,加密敏感数据在应用程序中变得越来越重要。Jasypt(Java Simplified Encryption)作为一个简化Java应用程序中数据加密的工具,为开发者提供了一种便捷而灵活的加密解决方案。本文将深入解析Jasypt的工作原理,以及如何在Spring Boot项目中集成和使用Jasypt来保护敏感信息。

springboot-jasypt.jpg

Jasypt简介

Jasypt(Java Simplified Encryption)是一个专注于简化Java加密操作的工具。它提供了一种简单而强大的方式来处理数据的加密和解密,使开发者能够轻松地保护应用程序中的敏感信息,如数据库密码、API密钥等。

Jasypt的设计理念是简化加密操作,使其对开发者更加友好。它采用密码学强度的加密算法,支持多种加密算法,从而平衡了性能和安全性。其中,Jasypt的核心思想之一是基于密码的加密(Password Based Encryption,PBE),通过用户提供的密码生成加密密钥,然后使用该密钥对数据进行加密和解密。

该工具还引入了盐(Salt)的概念,通过添加随机生成的盐值,提高了加密的安全性,防止相同的原始数据在不同的加密过程中产生相同的结果,有效抵御彩虹表攻击。

Jasypt与Spring Boot天然契合,可以轻松集成到Spring Boot项目中,为开发者提供了更便捷的数据安全解决方案。通过Jasypt,开发者可以在不深入了解底层加密算法的情况下,轻松实现数据的安全保护,使得应用程序更加可靠和安全。

官网地址: http://www.jasypt.org/

github地址: https://github.com/ulisesbocchio/jasypt-spring-boot

Spring Boot 3 集成 Jasypt

添加依赖

在pom文件中添加一下依赖

<dependency>
  <groupId>com.github.ulisesbocchio</groupId>
  <artifactId>jasypt-spring-boot</artifactId>
  <version>3.0.5</version>
</dependency>

添加配置文件

未指定前后缀的话默认格式ENC()括号里面是加密后的密文 然后实现自动解密

spring:
  # 数据源配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.10.106:3306/xj_doc?characterEncoding=utf8&serverTimezone=Asia/Shanghai
    username: root
    password: ENC(BLC3UQBxshlcA9tnMyJL7w==)

# 加密配置
jasypt:
  encryptor:
    # 指定加密密钥,生产环境请放到启动参数里面
    password: 0f7b0a5d-46bc-40fd-b8ed-3181d21d644f
    # 指定解密算法,需要和加密时使用的算法一致
    algorithm: PBEWithMD5AndDES
    
    iv-generator-classname: org.jasypt.iv.NoIvGenerator

#    property:
#      # 算法识别的前后缀,默认ENC(),包含在前后缀的加密信息,会使用指定算法解密
#      prefix: ENC@[
#      suffix: ]

启动类添加注解

在启动类上添加注解@EnableEncryptableProperties注解来开启自动解密

@SpringBootApplication
@MapperScan("cn.xj.xjdoc.**.mapper")
@EnableEncryptableProperties  //开启自动解密功能
public class XjdocApplication {
   
	public static void main(String[] args) {
   
		SpringApplication.run(XjdocApplication.class, args);
	}
}

测试类

public class JasyptUtil {
   

    public static void main(String[] args){
   
        StandardPBEStringEncryptor standardPBEStringEncryptor =new StandardPBEStringEncryptor();
        /*配置文件中配置如下的算法*/
        standardPBEStringEncryptor.setAlgorithm("PBEWithMD5AndDES");
        /*配置文件中配置的password*/
        standardPBEStringEncryptor.setPassword("0f7b0a5d-46bc-40fd-b8ed-3181d21d644f");
        //加密
        String jasyptPasswordEN =standardPBEStringEncryptor.encrypt("xj2022");
        //解密
        String jasyptPasswordDE =standardPBEStringEncryptor.decrypt(jasyptPasswordEN);
        System.out.println("加密后密码:"+jasyptPasswordEN);
        System.out.println("解密后密码:"+jasyptPasswordDE);
    }
}

生产环境安全处理

jasypt的password值放在配置文件中在生产环境中是不安全的,我们可以将password值放到启动命令中,删除配置文件中password 的配置行,启动命令如下所示:

java -Djasypt.encryptor.password=password -jar jasypt-spring-boot-demo-0.0.1-SNAPSHOT.jar

或者

java -jar jasypt-spring-boot-demo-0.0.1-SNAPSHOT.jar --jasypt.encryptor.password=password

总结

Jasypt作为一个简单而强大的加密工具,为Java应用程序提供了便捷的数据保护方案。通过与Spring Boot的集成,开发者可以在应用程序中轻松地加密和解密敏感信息。在实际项目中,选择合适的加密方式、安全存储密码以及与Spring Security等安全框架的集成,都是保障应用程序安全的关键步骤。希望本文能够帮助读者更深入地了解Jasypt,并在实际项目中合理地运用加密技术。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-01-02 15:14:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-02 15:14:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-02 15:14:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-02 15:14:01       18 阅读

热门阅读

  1. 数组|6. N 字形变换 12. 整数转罗马数字

    2024-01-02 15:14:01       39 阅读
  2. (vue)怎么监听表单里边的数据

    2024-01-02 15:14:01       41 阅读
  3. Git - 托管平台

    2024-01-02 15:14:01       36 阅读
  4. Spring ProxyFactoryBean

    2024-01-02 15:14:01       39 阅读
  5. Halcon 3D相关算子(一)

    2024-01-02 15:14:01       32 阅读
  6. HarmonyOS UI框架简介

    2024-01-02 15:14:01       45 阅读
  7. K8S学习指南(58)-K8S核心组件Kubelet简介

    2024-01-02 15:14:01       36 阅读
  8. windows系统lib文件和dll文件的区别

    2024-01-02 15:14:01       33 阅读