21、Jasypt-SpringBoot配(pei)置文件信(xin)息加密(mi)
Jasypt(Java Simplified Encryption)是(shi)一個輕(qing)量級的Java加密(mi)庫(ku),旨(zhi)在(zai)簡(jian)化加密(mi)操作,使(shi)Java開(kai)發(fa)者能夠在(zai)應用程序中(zhong)輕(qing)松(song)地實現數據(ju)加密(mi)和解密(mi)。它支持(chi)多種常(chang)見的加密(mi)算(suan)法,并提供了易于使(shi)用的 API 和加密(mi)容器,幫助開(kai)發(fa)者保護敏感信息(如密(mi)碼、密(mi)鑰、API 密(mi)鑰、數據(ju)庫(ku)密(mi)碼等)。
最常見(jian)的加密算法包括:
1、PBEWithMD5AndDES:基于密(mi)碼短語的(de)加(jia)密(mi)(使用 MD5 和 DES 算法)。
2、AES (Advanced Encryption Standard):一種對稱加密(mi)(mi)算法,通(tong)常用(yong)于較(jiao)強的加密(mi)(mi)需求。
3、RSA:非(fei)對(dui)稱加(jia)密算(suan)法,用(yong)于公共(gong)密鑰(yao)加(jia)密。
4、PBKDF2:一(yi)種(zhong)基(ji)于(yu)密(mi)碼(ma)的(de)密(mi)鑰派(pai)生函數(shu),用(yong)于(yu)增強密(mi)碼(ma)強度(du)。
Jasypt-SpringBoot的基本用法:
1、POM依賴:
<!-- 加解密依賴-->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
2、YML配置:
# 加密配置 jasypt: encryptor: # 指定加密密鑰,生產環境建議放到啟動參數 password: your-secret # 指定解密算法,需要和加密時使用的算法一致 algorithm: PBEWithMD5AndDES # 指定initialization vector類型 iv-generator-classname: org.jasypt.iv.NoIvGenerator
3、自定義加解密工具類:
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; import org.springframework.util.ObjectUtils; /** * 加(jia)解密工具(ju)類 */ public class EncrypDecryptUtil { /** * 加(jia)密(mi) * * @param password 加(jia)密(mi)時使(shi)用的密(mi)碼 * @param value 需要加(jia)密(mi)的值 * @return */ public static String encypt(String password, String value) { if(ObjectUtils.isEmpty(value)){ return null; } StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); encryptor.setPassword(password); return encryptor.encrypt(value); } /** * 解密(mi) * * @param password 解密(mi)時使(shi)用的(de)密(mi)碼 * @param value 需要解密(mi)的(de)值 * @return */ public static String decypt(String password, String value) { if(ObjectUtils.isEmpty(value)){ return null; } StandardPBEStringEncryptor decryptor = new StandardPBEStringEncryptor(); decryptor.setPassword(password); return decryptor.decrypt(value); } public static void main(String[] args) { // "your-secret": YML中配置 //加密 System.out.println(EncrypDecryptUtil.encypt("your-secret", "root")); System.out.println(EncrypDecryptUtil.encypt("your-secret", "root")); //解密(mi) System.out.println(EncrypDecryptUtil.decypt("your-secret", "7SZVFKSF09DDdmLwM8pU9dGKw==")); } }
4、相關使用:
ENC(密(mi)(mi)文):用于標記加密(mi)(mi)數據,其中(zhong)括(kuo)號中(zhong)的部分是加密(mi)(mi)后的內容(rong)
