數據庫用戶名密碼加密 jasypt的使用


jasypt庫的使用

1.簡介

Jasypt是一個Java簡易加密庫,用於加密配置文件中的敏感信息,如數據庫密碼。jasypt庫與springboot集成,在實際開發中非常方便。

注意:

  在使用jasypt-spring-boot-starter的前提下 ,所以如果引入maven之后啟動系統報錯,那么可以根據版本對應情況這個角度進行排查。

jasypt版本

springboot版本

2.1.0

2.1.0

1.5

1.4.2

1.5

1.5.3

1.8

1.4.2

 

2.添加依賴

jasypt開發者開發了starter,添加jasypt-spring-boot-starter依賴就可以了。該庫中有使用到slf4j依賴,若單獨測試,需添加相應依賴,或直接添加spring-boot-starter依賴。

    <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency>

3.添加注解

在Application應用類上添加注解

@EnableEncryptableProperties
啟用jasypt。

4.配置使用

將加密后的配置信息使用ENC函數,添加到配置文件中,應用啟動加載配置文件時,會自動解密。
Jasypt默認使用的算法為PBEWithMD5AndDES,該算法需要一個加密密鑰,可以在應用啟動時指定。也可以直接寫入配置文件,安全性稍差。

jasypt: encryptor: password: password 

 

5.測試示例

5.1 准備工作

添加依賴,應用類添加注解。

5.2 添加加密后的屬性配置

在配置文件中加入加密后的屬性配置信息,我們加密了字符串Password@1,使用的加密密鑰為password,添加到application.yml文件中。

jasypt: encryptor: password: password encrypted: property: ENC(uTSqb9grs1+vUv3iN8lItC0kl65lMG+8)

 

5.3 添加屬性解析類

添加一個類,加載配置文件中的配置信息。

@Service public class PropertyServiceForJasyptStarter { @Value("${encrypted.property}") private String property; public String getProperty() { return property; } public String getPasswordUsingEnvironment(Environment environment) { return environment.getProperty("encrypted.property"); } }

5.4 添加測試函數

@RunWith(SpringRunner.class) @SpringBootTest public class JasyptSimpleIntegrationTest { @Autowired PropertyServiceForJasyptStarter service; @Autowired Environment environment; @Test public void whenDecryptedPasswordNeeded_GetFromService() { System.out.println("service.getProperty() = " + service.getProperty()); System.out.println("service = " + service.getPasswordUsingEnvironment(environment)); } /** * 生成加密密文 * 每次加密后密文不一樣 */ @Test public void testPBECli(){ String[] args = {"input='Password@1", "password=password", "algorithm=PBEWithMD5AndDES"}; JasyptPBEStringEncryptionCLI.main(args); } }

執行結果如下:

service.getProperty() = Password@1
service = Password@1

6、加密函數

	public static void main(String[] args) { // 創建加密對象,默認 PBEWithMD5AndDES BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); // 加密所需的密鑰 textEncryptor.setPassword("password"); // 加密后的數據(數據庫的用戶名或密碼) String encData = textEncryptor.encrypt("Password@1"); // 解密后的數據(原數據) String decData = textEncryptor.decrypt(encData); System.out.println("encData: " + encData); System.out.println("decData: " + decData); }

輸出:

encData: uK6xyed60q9NlSBAVb0pFyxA23TYFgtQ
decData: Password@1

 

轉載自 https://blog.csdn.net/nalw2012/article/details/100122201

更詳細使用細節請參考:https://blog.csdn.net/u013905744/article/details/86508236


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM