本文主要是介绍SpringBoot集成Jasypt实现敏感信息加密,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
项目场景:
在服务中不可避免的需要使用到一些秘钥(数据库、redis等)开发和测试环境还好,但生产如果采用明文配置将会有安全问题,jasypt是一个通用的加解密库,可以使用它。
在Spring Boot中使用Jasypt加密和解密敏感数据非常简单,只需要在Spring Boot应用程序中添加Jasypt依赖项,并在应用程序配置文件中指定加密和解密密钥即可。
实现步骤:
1、添加Jasypt依赖
<!-- 配置文件敏感信息加密 -->
<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2.1.1</version>
</dependency>
2、添加配置信息
为了避免密钥泄露,密钥不应该直接放在文件中,这里为了方便暂时放在配置文件中。
# 本地启动配置文件,加密秘钥需在该配置中指定,便于开发交流
# 正式环境可配置JVM启动参数: -Djasypt.encryptor.password=testjasypt
jasypt.encryptor.password = testjasypt
#加密算法,不配置使用默认的
#jasypt.encryptor.algorithm = PBEWithMD5AndDES
正式环境可以把秘钥放在环境变量中启动
java -Djasypt.encryptor.password=秘钥 -jar xxx.jar
3、生成密文
方式一:java文件生成加密
package com.test.controller;import org.jasypt.encryption.StringEncryptor;
import org.jasypt.util.text.BasicTextEncryptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;/*** jasypt加密解密*/
@Api(tags = "jasypt加密解密测试")
@RestController
@RequestMapping("/v1/jasypt")
public class JasyptController {@Autowiredprivate StringEncryptor stringEncryptor;/*** jasypt加密** @param password*/@ApiOperation(value = "jasypt加密")@GetMapping("/encrypt")public String encrypt(String password) {return stringEncryptor.encrypt(password);}/*** jasypt解密** @param password* @return*/@ApiOperation(value = "jasypt解密")@GetMapping("/decrypt")public String decrypt(String password) {return stringEncryptor.decrypt(password);}public static void main(String[] args) {BasicTextEncryptor encryptor = new BasicTextEncryptor();//加密密钥encryptor.setPassword("testjasypt");//加密String encData = encryptor.encrypt("test123456!");//解密String decData = encryptor.decrypt(encData);System.out.println("加密后:"+encData);System.out.println("解密后:"+decData);}
}
方式二:CMD命令行加密
通过该种方式获取密文,需要到maven仓库下jasypt-1.9.2.jar(版本根据自身选择)包所在的路径下执行,否则会报找不到对应的主类,一般目录在repository\org\jasypt\jasypt\下面。
// 加密命令
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input='test123456!' password=testjasypt algorithm=PBEWithMD5AndDES// 解密命令
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input='Vqlju4F/mF4dIxGfxk2LMcNVx8NTwbln' password=testjasypt algorithm=PBEWithMD5AndDES
参数说明:
- org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI是jasypt提供的一个用于加密的实体类
- input表示需要加密的字符串如:密码
- password表示本次加密算法使用的秘钥
- algorithm表示加密算法的名称,默认PBEWithMD5AndDES
4、配置加密后的密码
ENC()是固定格式,括号里是上一步生成的密文。
#原来的密码
#spring.datasource.password=test123456!
#加密后的密码
spring.datasource.password=ENC(Vqlju4F/mF4dIxGfxk2LMcNVx8NTwbln)
源码地址:https://download.csdn.net/download/u011974797/88985378
这篇关于SpringBoot集成Jasypt实现敏感信息加密的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!