詳解如何利用jasypt實現(xiàn)配置文件加密
Jasypt (Java Simplified Encryption) 是一個 java 庫,它允許開發(fā)人員以最小的成本將基本的加密功能添加到項目中,而無需深入了解密碼學(xué)的工作原理。
引入依賴
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.4</version>
</dependency>
生效
如果是為spring boot項目的配置文件加密,則無需額外配置,啟動類上的@SpringBootApplication自動會將其注入程序,使其生效。
作用域
指定配置文件的作用域,其他配置文件不受jasypt影響
@Configuration
@EncryptablePropertySources({
@EncryptablePropertySource("classpath:sentinel-1.properties"),
@EncryptablePropertySource("classpath:sentinel-2.properties")
})
應(yīng)用
工具類
import org.jasypt.encryption.StringEncryptor;
import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
/**
* @author issavior
*/
public class JasyptUtil {
/**
* org.jasypt.encryption.StringEncryptor對象
*/
private static StringEncryptor stringEncryptor = null;
public static StringEncryptor getInstance(String secretKey) throws Exception {
if (secretKey == null || secretKey.trim().equals("")) {
System.out.println("秘鑰不能為空!");
throw new Exception("org.jasypt.encryption.StringEncryptor秘鑰不能為空!");
}
if (stringEncryptor == null) {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
// 這個秘鑰必須是我們自己定義
config.setPassword(secretKey);
config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
config.setKeyObtentionIterations("1000");
config.setPoolSize("1");
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
stringEncryptor = encryptor;
}
return stringEncryptor;
}
public static void main(final String[] args) {
// 秘鑰字符串
String secretKey = "123!@#";
// 待加密的明文密碼
String pass = "123456";
try {
StringEncryptor stringEncryptor = JasyptUtil.getInstance(secretKey);
String encryptPass = stringEncryptor.encrypt(pass);
System.out.println("【" + pass + "】被加密成【" + encryptPass + "】");
String clearPass = stringEncryptor.decrypt(encryptPass);
System.out.println("【" + encryptPass + "】被解密成【" + clearPass + "】");
} catch (Exception e) {
e.printStackTrace();
}
}
}
配置
jasypt:
encryptor:
password: 123!@#
my:
# 必須用ENC()包起來,這樣jasypt才能識別出來這個密碼需要解密再傳給應(yīng)用程序
msg: ENC(PwyGulNOC9YERAC9A6zpH8Da1tn50dtgJ1XBqygkdNoBTkjmENd+F5yJJMp4sthf)
屬性一覽

進階
其內(nèi)部屬性都是可以重寫的,包括ENC()等。
當然了,你的鹽和密碼一定要分開存儲,也就是說,加密后的密碼配置在配置文件中,加密的鹽可以放在啟動參數(shù)上。
到此這篇關(guān)于詳解如何利用jasypt實現(xiàn)配置文件加密的文章就介紹到這了,更多相關(guān)jasypt配置文件加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳
相關(guān)文章
springcloud gateway網(wǎng)關(guān)服務(wù)啟動報錯的解決
這篇文章主要介紹了springcloud gateway網(wǎng)關(guān)服務(wù)啟動報錯的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
深入淺析Java Object Serialization與 Hadoop 序列化
序列化是指將結(jié)構(gòu)化對象轉(zhuǎn)化為字節(jié)流以便在網(wǎng)絡(luò)上傳輸或者寫到磁盤永久存儲的過程。下面通過本文給大家分享Java Object Serialization與 Hadoop 序列化,需要的朋友可以參考下2017-06-06
Java使用EasyExcel實現(xiàn)對excel文件的讀寫方式
這篇文章主要介紹了Java使用EasyExcel實現(xiàn)對excel文件的讀寫方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05
SpringBoot中使用Session共享實現(xiàn)分布式部署的示例代碼
這篇文章主要介紹了SpringBoot中使用Session共享實現(xiàn)分布式部署的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Java?將PDF轉(zhuǎn)為HTML時保存到流的方法和步驟
本文介紹如何通過Java后端程序代碼將PDF文件轉(zhuǎn)為HTML,并將轉(zhuǎn)換后的HTML文件保存到流,下面是實現(xiàn)轉(zhuǎn)換的方法和步驟,感興趣的朋友一起看看吧2022-01-01

