jasypt 配置文件关键信息配置 加密

简介: jasypt 配置文件关键信息配置 加密

SpringBoot 项目开发中,配置文件都是对外暴露的。不符合开发时的规范jasypt 提供了配置文件的加密解密操作。

jasypt加解密的过程:

  • 事先通过将需要加密的参数使用加密工具得到的密文写入配置文件,并在配置文件中使用ENC()“函数”(本质就是一个标记特征字符)进行标记;
  • 应用启动的时候传入解密密钥(对称加密算法的密码、非对称加密算法的私钥),然后应用在读取配置参数键值的时候,如果发现键值中含有ENC标记,就将“ENC()”中的内容抽取出来,然后调用加解密接口(org.jasypt.encryption.StringEncryptor)的实现类进行解密,从而得到明文。加密操作同理。

1、增加依赖

<!--jasypt关键密码加密解密begin--><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>1.16</version></dependency><!--jasypt关键密码加密解密end-->

2、生成需要加密的信息密文。

jasypt拥有自己的加密方式。默认是 StringEncryptor 代码中生成密文。

packagecom.tl.springboot.jasypt;
importorg.jasypt.encryption.StringEncryptor;
importorg.junit.Test;
importorg.junit.runner.RunWith;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.boot.test.context.SpringBootTest;
importorg.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/*** OneTest** @author mjx* @date 2020/5/14*/@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTestpublicclassOneTest {
@AutowiredprivateStringEncryptorstringEncryptor;
@Testpublicvoidencrytest() {
Stringencrypt=stringEncryptor.encrypt("admin");
System.out.println("加密"+encrypt);
Stringdecrypt=stringEncryptor.decrypt(encrypt);
System.out.println("解密 = "+decrypt);
    }
}

或者自定义使用其他的加密方式,(实现)

@TestpublicvoidencrytestTwo() {
// 同样是 jasypt 的加解密BasicTextEncryptorbasicTextEncryptor=newBasicTextEncryptor();
// 需要 设置 加密的 密码basicTextEncryptor.setPassword("hhh");
Stringencrypt=basicTextEncryptor.encrypt("222");
System.out.println("encrypt = "+encrypt);
Stringdecrypt=basicTextEncryptor.decrypt(encrypt);
System.out.println("decrypt = "+decrypt);
    }

3、配置文件中添加密文代码。

拷贝密文代码,替换配置文件中的信息

# 密钥jasypt:  encryptor:    password: kkmima
spring:  datasource:    one:      username: root
      password: ENC(7mSezIBBQ0/1UcpsJlc+Fw==)
      jdbc-url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC
      driver-class-name: com.mysql.cj.jdbc.Driver
      type: com.zaxxer.hikari.HikariDataSource

注意:密文需要使用ENC开头并且,密文需要用括号括起来。

注意这里,密钥也在配置文件中 还是明文显示。密钥也可以放在别的地方。

1、直接放在代码中。

2、放在启动代码里。(项目因为是达成jar的方式进行运行的,所以在启动的时候是 java -jar 的方式启动)   java -jar Djasypt.encryptor.password=kkmima xxx.jar   启动添加配置,

3、放在java配置中。运行时配置

jasyp密码.png

选中项目然后在 VM options 中添加-Djasypt.encryptor.password=kkmima 那么在配置文件中 就可以不用配置

4、自定义加解密类,实现StringEncryptor接口

packagecom.mjx.config;
importorg.jasypt.encryption.StringEncryptor;
importorg.springframework.stereotype.Component;
/*** @author mjx* @date */@Component("myEncryptor")
publicclassMyEncryptorimplementsStringEncryptor {
/**** 加密方法* @param :* @param* @return null* @author: MJX* @createtime: */@OverridepublicStringencrypt(Strings) {
System.out.println("加密使用 = "+s);
returns;
    }
/**** 解密操作* @param :* @param* @return null* @author: MJX* @createtime: */@OverridepublicStringdecrypt(Strings) {
System.out.println("待解密数据: = "+s);
// 解密逻辑returns;
    }
}

配置文件中指定加解密类

#指定加解密类jasypt.encryptor.bean=myEncryptor


目录
相关文章
|
2月前
|
安全 API 开发工具
oss加密的配置方法
阿里云OSS提供多种加密选项:SSE-OSS(默认或对象级AES-256加密)、SSE-KMS(使用KMS托管CMK)、临时密钥加密和客户端加密(CSE)。可通过控制台或API设置Bucket策略,使用HTTP头部指定加密方式。KMS和临时密钥可能涉及更复杂的密钥管理和权限配置。
149 5
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux vsFTPd服务详解——文件加密传输配置
Linux vsFTPd服务详解——文件加密传输配置
147 2
|
2天前
|
安全 算法 网络安全
数字堡垒的构筑者:网络安全与信息加密技术纵览
【4月更文挑战第30天】在数字化时代,数据如同虚拟世界中的流通货币,而网络安全则是保护这些数据的堡垒。本文深入探讨了网络安全漏洞的概念、危害及其产生的原因;同时详细介绍了加密技术的基本原理、类型以及它们在信息安全中的应用。此外,文章还强调了提升个人和企业的安全意识在构建安全防线中的重要性。通过分析当前网络威胁和防御策略的最新动态,旨在为读者提供全面的网络安全知识框架,帮助大家构建更加坚固的数字堡垒。
|
5天前
|
存储 Java 数据库
SpringBoot使用jasypt实现数据库配置加密
这样,你就成功地使用Jasypt实现了Spring Boot中的数据库配置加密,确保敏感信息在配置文件中以加密形式存储,并在应用启动时自动解密。
31 2
|
1月前
|
Java 数据库 数据安全/隐私保护
SpringBoot项目使用jasypt加解密的方法加密数据库密码
SpringBoot项目使用jasypt加解密的方法加密数据库密码
9 0
|
2月前
|
编解码 Java Nacos
nacos常见问题之密码加密配置如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
151 0
|
2月前
|
Java 数据库 Maven
Jasypt 配置文件加密的用法
Jasypt 配置文件加密的用法
63 0
|
Java 数据安全/隐私保护
Java实现最电话号码的简单加密源码
Java实现最电话号码的简单加密源码
18 0
|
3月前
|
存储 安全 算法
【接口加密】Java中的接口加密实践
【接口加密】Java中的接口加密实践
|
3月前
|
算法 安全 Java
Java 实现 RSA 非对称加密算法-加解密和签名验签
Java 实现 RSA 非对称加密算法-加解密和签名验签