Springboot配置文件加密方式
前面敘述了數(shù)據(jù)傳遞過程中的加密,需要使用到aop對result和request進行加密和解密。
現(xiàn)在需要對服務(wù)器的中間件進行保護設(shè)置,在配置文件中盡量不要暴露出來服務(wù)器件的密碼賬號。
需要對配置文件進行加密處理。
一、jasypt
jasypt是專門加密各種配置文件的依賴包
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency>
jasypt有多種版本,并且包之間的依賴問題比較多
二、使用步驟
1.引入依賴
添加配置
如下(yml配置):
jasypt:
encryptor:
algorithm: PBEWithMD5AndDES #算法-固定寫法一般沒人改
password: 1234qwer
iv-generator-classname: org.jasypt.iv.NoIvGenerator #設(shè)置初始向量IV生成器的類名
2.生成密鑰
使用代碼生成密鑰
public class JasyptUtil {
/**
* 加密方法
* @param salt 鹽值
* @param targetString 待加密字符串
* @return 密文
*/
public static String encrypt(String salt, String targetString) {
BasicTextEncryptor encryptor = new BasicTextEncryptor();
encryptor.setPassword(salt);
return encryptor.encrypt(targetString);
}
/**
* 解密方法
* @param salt 鹽值
* @param targetString 待解密字符串
* @return 明文
*/
public static String decrypt(String salt,String targetString) {
BasicTextEncryptor encryptor = new BasicTextEncryptor();
encryptor.setPassword(salt);
return encryptor.decrypt(targetString);
}
public static void main(String[] args) {
String salt = "1234qwer";
String password = "xxxxx";
// 進行加密操作
String encryptString1 = encrypt(salt, password);
// 進行解密操作
String decryptString1 = decrypt(salt, encryptString1);
// 輸出明文和密文
System.out.println("encryptString1="+encryptString1);
System.out.println("decryptString1="+decryptString1);
}
}
使用jar包生成密鑰
java -cp D:\repository\org\jasypt\jasypt\1.9.3\jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="xxxxx" password=1234qwer algorithm=PBEWithMD5AndDES
在yml配置文件中修改密鑰:
password: ENC(KMMwXkYtccOvU+mMOXXojP7Tif1Ja9fN)
ENC是jaspty中默認的,可以設(shè)置配置項自定義設(shè)置
3.idea啟動添加環(huán)境變量
在idea中設(shè)置啟動項configuration,添加環(huán)境變量

4.linux環(huán)境啟動
nohup java -Djasypt.encrypt.password=1234qwer -jar xxxxx.jar > nohup.log &
報錯
版本問題,解決沖突
如果錯誤信息是缺少jce安全插件,那么需要下載jce_policy-8的zip包去放入到JDK下的jre/lib/security下
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java 字節(jié)數(shù)組(byte[])和整型(int)的相互轉(zhuǎn)換
在Java編程中,有時需要將字節(jié)類型(byte)轉(zhuǎn)換為整數(shù)類型(int),或者反過來轉(zhuǎn)換,本文主要介紹了Java 字節(jié)數(shù)組(byte[])和整型(int)的相互轉(zhuǎn)換,感興趣的可以了解一下2023-12-12

