jasypt對(duì)配置文件的數(shù)據(jù)加密與解密方式
介紹
- Jasypt是一個(gè)Java庫,可以使開發(fā)者不需太多操作來給Java項(xiàng)目添加基本加密功能,而且不需要知道加密原理。
- Jasypt能夠以很簡(jiǎn)單的方式為Java項(xiàng)目提供加密功能。
- Jasypt還符合RSA標(biāo)準(zhǔn)的基于密碼的加密,并提供了無配置加密工具以及新的、高可配置標(biāo)準(zhǔn)的加密工具。
作用
在配置文件中寫密文,程序啟動(dòng)后自動(dòng)解密,再使用這個(gè)解密后的信息對(duì)MySQL或Redis等進(jìn)行連接,可以隱藏一些配置文件中的敏感信息,如MySQL用戶名密碼、Redis密碼等。
快速開始
導(dǎo)入依賴
<!--jasypt-->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>加密數(shù)據(jù)
寫一個(gè)main方法,加密數(shù)據(jù)庫的用戶名和密碼,得到加密后的用戶名和密碼。
public static void main(String[] args) {
StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();
/*配置文件中配置如下的算法*/
standardPBEStringEncryptor.setAlgorithm("PBEWithMD5AndDES");
/*配置文件中配置的password*/
standardPBEStringEncryptor.setPassword("EWRREWRERWECCCXC");
/*要加密的文本*/
String username = standardPBEStringEncryptor.encrypt("root");
String password = standardPBEStringEncryptor.encrypt("password");
/*將加密的文本寫到配置文件中*/
System.out.println("username = " + username);
System.out.println("password = " + password);
}得到加密后的用戶名和密碼。
username = aL72g6IaZDwxZE63fhujOA== password = V+sgI2xsjCIh2gHs15jN8CyAwGzpwr6k
配置文件
password是必須自己定義的,其他都可以不配置,有默認(rèn)的配置。
在敏感信息處使用對(duì)應(yīng)的ENC(密文)代替
# jasypt 配置加密
jasypt:
encryptor:
# 密碼鹽值(自定義)
password: jasypt
# 加密算法設(shè)置
algorithm: PBEWithMD5AndDES
spring:
datasource:
url: jdbc:mysql://localhost:3306/hm_project_v4?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
username: ENC(aL72g6IaZDwxZE63fhujOA==)
password: ENC(V+sgI2xsjCIh2gHs15jN8CyAwGzpwr6k)這樣就實(shí)現(xiàn)了對(duì)配置文件的數(shù)據(jù)進(jìn)行加密或者解密了。
注意:
main方法的algorithm和password 要與 配置文件的相同【重要】
獲取配置文件中的數(shù)據(jù)
在配置文件中寫密文,程序啟動(dòng)后自動(dòng)解密,我們使用正常的@Value方式獲取的數(shù)據(jù)即為解密后的數(shù)據(jù)。
@RestController
public class MUserController {
@Value("${spring.datasource.password}")
private String password;
@GetMapping("/properties")
public String getProperties() {
return password;
}
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 在SpringBoot中通過jasypt進(jìn)行加密解密的方法
- JAVA(SpringBoot)集成Jasypt進(jìn)行加密、解密功能
- springboot使用jasypt加密庫實(shí)現(xiàn)數(shù)據(jù)庫加解密示例代碼
- Java使用Jasypt進(jìn)行加密和解密的技術(shù)指南
- JAVA SpringBoot集成Jasypt進(jìn)行加密、解密的詳細(xì)過程
- 使用jasypt對(duì)yml文件進(jìn)行加密解密的實(shí)現(xiàn)
- Springboot之Jasypt配置文件加密/解密方式
- JAVA集成Jasypt進(jìn)行加密、解密(SpringBoot)詳細(xì)教程
相關(guān)文章
Spring將MultipartFile轉(zhuǎn)存到本地磁盤的三種方式
在Java中處理文件向來是一種不是很方便的操作,然后隨著Spring框架的崛起,使用Spring框架中的MultipartFile來處理文件也是件很方便的事了,今天就給大家介紹Spring將MultipartFile轉(zhuǎn)存到本地磁盤的方式,需要的朋友可以參考下2024-10-10
基于NIO的Netty網(wǎng)絡(luò)框架(詳解)
下面小編就為大家?guī)硪黄贜IO的Netty網(wǎng)絡(luò)框架(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06
SpringBoot實(shí)現(xiàn)接口版本控制的示例代碼
這篇文章主要介紹了springboot如何實(shí)現(xiàn)接口版本控制,接口版本控制,比如微服務(wù)請(qǐng)求中某個(gè)接口需要升級(jí),正常做法是升級(jí)我們的版本,文中有詳細(xì)的代碼示例供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下2024-03-03
springboot Actuator的指標(biāo)監(jiān)控可視化功能詳解
SpringBoot Actuator是springboot為簡(jiǎn)化我們對(duì)微服務(wù)項(xiàng)目的監(jiān)控功能抽取出來的模塊,使得我們每個(gè)微服務(wù)快速引用即可獲得生產(chǎn)界別的應(yīng)用監(jiān)控、審計(jì)等功能。這篇文章主要介紹了springboot Actuator的指標(biāo)監(jiān)控可視化,需要的朋友可以參考下2021-08-08
使用Java實(shí)現(xiàn)二維碼生成與掃碼驗(yàn)證功能
在現(xiàn)代軟件開發(fā)中,二維碼被廣泛應(yīng)用于各種場(chǎng)景,例如支付、預(yù)約、身份驗(yàn)證等,本篇文章將以 Java 為例,介紹如何實(shí)現(xiàn)二維碼的生成以及掃碼驗(yàn)證的功能,需要的朋友可以參考下2025-08-08
java使用FFmpeg提取音頻的實(shí)現(xiàn)示例
在Java開發(fā)中,我們經(jīng)常會(huì)遇到需要使用FFmpeg來處理音視頻文件的情況,本文主要介紹了java使用FFmpeg提取音頻的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
Spring Boot容器加載時(shí)執(zhí)行特定操作(推薦)
這篇文章主要介紹了Spring Boot容器加載時(shí)執(zhí)行特定操作及spring內(nèi)置的事件,需要的朋友可以參考下2018-01-01

