springboot使用jasypt加密庫實現數據庫加解密示例代碼
一、背景說明
在服務中不可避免的需要使用到一些秘鑰(數據庫、redis等)開發(fā)和測試環(huán)境還好,但生產如果采用明文配置將會有安全問題,jasypt是一個通用的加解密庫,可以使用它。
jasypt默認使用StringEncryptor來進行加解密,也可以自定義自己的加解密類來替換它 。
二、Jasypt介紹
2.1 Jasypt是什么?
Jasypt是一個Java庫,Java 加密包,用于加密和解密敏感數據,例如密碼和API密鑰。
它允許開發(fā)者以最小的努力為他/她的項目添加基本的加密功能,而且不需要對密碼學的工作原理有深刻的了解。
使用Jasypt對密碼進行加解密可以保證密碼的安全性。
2.2 Jasypt的功能特性
- 高安全性、基于標準的加密技術,既可用于單向加密也可用于雙向加密。
- 加密密碼、文本、數字、二進制文件…與Hibernate的透明集成。
- 適合集成到基于Spring的應用程序中,也可與Spring Security透明地集成。
- 對應用程序的配置(即數據源)進行加密的綜合能力。
- 在多處理器/多核系統(tǒng)中具有高性能加密的特殊功能。
- 開放的API,可與任何JCE供應商一起使用。
- 提供了一組內置的加密和解密算法,用于保護敏感數據。
- 其中包括使用對稱加密算法(如AES和Blowfish)和非對稱加密算法(如RSA)進行加密和解密。
三、示例1:在Spring Boot中使用Jasypt加密和解密敏感數據
- 在Spring Boot中使用Jasypt加密和解密敏感數據非常簡單。
- 您只需要在Spring Boot應用程序中添加Jasypt依賴項,并在應用程序配置文件中指定加密和解密密鑰即可。
以下是在Spring Boot應用程序中使用Jasypt加密和解密密碼的示例代碼:
3.1 添加Jasypt依賴項
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency>
3.2 配置加密和解密密鑰
在應用程序配置文件(例如application.properties或application.yml)中指定加密和解密密鑰。
例如:
jasypt.encryptor.password=mySecretKey
3.3 在應用程序中使用加密和解密功能
在應用程序中使用Jasypt加密和解密密碼非常簡單。
您只需要使用@Autowired注釋注入org.jasypt.encryption.StringEncryptor bean,
并使用encrypt和decrypt方法加密和解密密碼。
例如:
/** * 對數據庫進行加密 * * @param passWord * @return */ @GetMapping("/encrypt") public String jasyptEncrypt(String passWord) { StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor(); EnvironmentPBEConfig config = new EnvironmentPBEConfig(); config.setAlgorithm("PBEWithMD5AndDES"); // 加密的算法,這個算法是默認的 config.setPassword("SDHYDZ"); // 加密的密鑰,隨便自己填寫,很重要千萬不要告訴別人 standardPBEStringEncryptor.setConfig(config); String encryptedText = standardPBEStringEncryptor.encrypt(passWord); return encryptedText; } /** * 對數據庫進行解密 * * @param passWord * @return */ @GetMapping("/decrypt") public String jasyptDecrypt(String passWord) { StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor(); EnvironmentPBEConfig config = new EnvironmentPBEConfig(); config.setAlgorithm("PBEWithMD5AndDES"); config.setPassword("SDHYDZ"); standardPBEStringEncryptor.setConfig(config); String plainText = standardPBEStringEncryptor.decrypt(passWord); return plainText; }
四、示例2:在Spring Boot中使用Jasypt加解密密碼的步驟
以下是在Spring Boot中使用Jasypt加解密密碼的步驟:
4.1 在pom.xml文件中添加依賴
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency>
4.2 在application.properties或application.yml中配置加密算法和密鑰:
jasypt.encryptor.algorithm=PBEWithMD5AndDES jasypt.encryptor.password=your_secret_password
或者:
jasypt: encryptor: algorithm: PBEWithMD5AndDES #加密算法,不配置使用默認的 password: your_secret_password #加密秘鑰
在配置文件中配置秘鑰仍可能存在密碼泄露的可能,因此我將秘鑰放在項目啟動是加載的:
@SpringBootApplication public class HyErpApplication { public static void main(String[] args) throws UnknownHostException { System.setProperty("jasypt.encryptor.password",SecHelper.decryptStr("6qNfbL8HgFdyj7IZyysdzTWf")); ConfigurableApplicationContext application = SpringApplication.run(HyErpApplication.class, args); } }
4.3 在application.properties或application.yml中使用加密后的密碼:
spring.datasource.password=ENC(encrypted_password)
或者:
spring: datasource: password: ENC(encrypted_password)
總結
到此這篇關于springboot使用jasypt加密庫實現數據庫加解密的文章就介紹到這了,更多相關springboot數據庫加解密內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!