最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVA SpringBoot集成Jasypt進行加密、解密的詳細過程

 更新時間:2025年11月25日 11:59:53   作者:百***2634  
文章詳細介紹了如何在SpringBoot項目中集成Jasypt進行加密和解密,包括Jasypt簡介、如何添加依賴、配置加密密鑰、加密敏感數(shù)據(jù)、自定義加密配置以及加密與解密的示例,通過這些步驟,開發(fā)者可以輕松地保護應(yīng)用程序中的敏感信息,感興趣的朋友跟隨小編一起看看吧

JAVA (SpringBoot) 集成 Jasypt 進行加密、解密 - 詳細教程

在開發(fā)過程中,我們經(jīng)常需要處理敏感數(shù)據(jù),如數(shù)據(jù)庫密碼、API 密鑰等。為了確保這些數(shù)據(jù)的安全性,我們可以使用加密技術(shù)來保護它們不被泄露。Jasypt(Java Simplified Encryption)是一個簡單易用的加密庫,非常適合用來保護配置文件中的敏感數(shù)據(jù)。本文將詳細介紹如何在 Spring Boot 項目中集成 Jasypt,并展示加密、解密的實際使用方式。

一、Jasypt 簡介

Jasypt 是 Java 平臺的簡化加密工具,支持對文本和數(shù)據(jù)進行加密和解密,尤其適合應(yīng)用于 Spring Boot 項目的配置文件加密。其主要特點包括:

  • 簡單易用的 API
  • 支持對屬性文件內(nèi)容加密
  • 支持常見的加密算法
  • 與 Spring Boot 的無縫集成

二、在 Spring Boot 中集成 Jasypt

1. 添加 Jasypt 依賴

pom.xml 文件中添加 Jasypt 依賴:

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.4</version> <!-- 請根據(jù)需要更新到最新版本 -->
</dependency>

如果使用的是 Gradle,則添加如下依賴:

implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.4'

2. 配置加密密鑰

為了加密和解密數(shù)據(jù),Jasypt 需要一個密鑰(secret key)。你可以將這個密鑰配置在 Spring Boot 的 application.propertiesapplication.yml 文件中:

  • application.properties 配置:
    • jasypt.encryptor.password=mysecretkey
  • application.yml 配置:
    • jasypt:
    • encryptor:
    • password: mysecretkey

注意mysecretkey 是你用于加密和解密的密鑰,請確保密鑰的安全性,避免公開泄露。可以通過環(huán)境變量或其他安全手段來管理該密鑰。

3. 加密敏感數(shù)據(jù)

假設(shè)我們需要對數(shù)據(jù)庫密碼進行加密,首先,我們需要生成加密后的密碼。

3.1 使用 Jasypt 命令行工具加密

Jasypt 提供了命令行工具來加密數(shù)據(jù),執(zhí)行以下命令加密數(shù)據(jù)庫密碼:

java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="your_password" password="mysecretkey" algorithm=PBEWithMD5AndDES

其中:

  • input 是要加密的文本(例如數(shù)據(jù)庫密碼)
  • password 是加密密鑰(與我們在配置文件中設(shè)置的 mysecretkey 一致)
  • algorithm 是加密算法,這里使用 PBEWithMD5AndDES。

執(zhí)行后,將得到類似以下的加密文本輸出:

5MG1sSxAx+EeJsBdmcVdKg==

3.2 將加密后的密碼寫入配置文件

加密后的密碼需要在配置文件中使用 ENC() 包裹。例如,假設(shè)加密的是數(shù)據(jù)庫密碼:

  • application.properties
    • spring.datasource.password=ENC(5MG1sSxAx+EeJsBdmcVdKg==)
  • application.yml
    • spring:
    • datasource:
    • password: ENC(5MG1sSxAx+EeJsBdmcVdKg==)

Jasypt 會在應(yīng)用啟動時自動解密使用 ENC() 包裹的加密值。

4. 啟動應(yīng)用并解密數(shù)據(jù)

當 Spring Boot 項目啟動時,Jasypt 會自動識別 ENC() 包裹的加密內(nèi)容,并使用密鑰進行解密,無需額外的代碼邏輯。這意味著在運行時,應(yīng)用能夠使用解密后的值。

三、自定義 Jasypt 加密配置

Jasypt 支持多種加密算法和配置項。如果你需要使用不同的加密算法、密鑰生成方式等,可以通過 Java 配置進行自定義。

1. 自定義加密器配置

通過自定義 StringEncryptor,我們可以配置加密算法、密鑰迭代次數(shù)等:

import org.jasypt.encryption.StringEncryptor;
import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JasyptConfig {
    @Bean
    public StringEncryptor stringEncryptor() {
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        // 配置加密密鑰,務(wù)必保密
        config.setPassword("mysecretkey");
        // 設(shè)置加密算法
        config.setAlgorithm("PBEWithMD5AndDES");
        // 設(shè)置密鑰迭代次數(shù),影響破解難度
        config.setKeyObtentionIterations("1000");
        // 設(shè)置加密池的大小,1 表示單個實例使用
        config.setPoolSize("1");
        // 鹽生成器類,防止彩虹表攻擊
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        // 設(shè)置輸出編碼類型為 base64
        config.setStringOutputType("base64");
        encryptor.setConfig(config);
        return encryptor;
    }
}

2. 參數(shù)說明:

  • Password: 加密和解密時使用的密鑰。應(yīng)與配置文件中的 jasypt.encryptor.password 保持一致。
  • Algorithm: 加密算法??梢赃x擇 PBEWithMD5AndDES、PBEWithSHA1AndDESede 等。
  • KeyObtentionIterations: 密鑰生成的迭代次數(shù),值越高,破解難度越大。
  • SaltGeneratorClassName: 鹽生成器,防止使用預(yù)計算好的哈希表(彩虹表)破解。
  • StringOutputType: 設(shè)置輸出的編碼方式。通常使用 base64hexadecimal。

四、加密與解密的詳細示例

以下是一個詳細的加密與解密的單元測試示例,用于測試自定義加密器的加密和解密功能。

import org.jasypt.util.text.BasicTextEncryptor;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class JasyptEncryptionTest {
    @Test
    public void testEncryptionDecryption() {
        // 創(chuàng)建 BasicTextEncryptor 對象進行簡單的加密解密操作
        BasicTextEncryptor encryptor = new BasicTextEncryptor();
        // 設(shè)置加密密鑰,與應(yīng)用程序中使用的密鑰一致
        encryptor.setPassword("mysecretkey");
        // 待加密的敏感數(shù)據(jù)
        String originalText = "mySensitiveData";
        // 使用 encrypt() 方法對文本進行加密
        String encryptedText = encryptor.encrypt(originalText);
        System.out.println("加密后的文本: " + encryptedText);
        // 使用 decrypt() 方法解密文本
        String decryptedText = encryptor.decrypt(encryptedText);
        System.out.println("解密后的文本: " + decryptedText);
        // 確保解密后的文本與原始文本一致
        assertEquals(originalText, decryptedText);
    }
}

詳細注釋:

  1. BasicTextEncryptor: Jasypt 提供的簡易加密類,用于文本加密和解密。
  2. encrypt(): 加密方法,將明文轉(zhuǎn)換為加密后的文本。
  3. decrypt(): 解密方法,將加密后的文本還原為明文。
  4. assertEquals(): 測試框架中的斷言方法,用于驗證加密和解密是否正確。

測試輸出:

加密后的文本: yxKTmDKoxkOTxF5GyqaDLw==
解密后的文本: mySensitiveData

測試通過則說明加密與解密功能正常。

五、總結(jié)

通過本文的詳細步驟,我們了解了如何在 Spring Boot 項目中集成 Jasypt 進行加密和解密。Jasypt 可以通過簡單的配置將敏感數(shù)據(jù)加密保存,從而提高應(yīng)用程序的安全性。

集成步驟總結(jié):

  1. 引入 Jasypt 依賴。
  2. 配置加密密鑰。
  3. 對敏感數(shù)據(jù)進行加密,并在配置文件中使用 ENC() 包裹加密值。
  4. Spring Boot 自動解密 ENC() 包裹的值。
  5. 可根據(jù)需求自定義加密器,選擇適合的加密算法和配置。

通過這種方式,我們可以在不修改代碼的情況下輕松保護應(yīng)用程序的敏感信息。

參考文檔:

到此這篇關(guān)于JAVA SpringBoot集成Jasypt進行加密、解密的詳細過程的文章就介紹到這了,更多相關(guān)java jasypt加密解密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot中驗證用戶上傳的圖片資源的方法

    SpringBoot中驗證用戶上傳的圖片資源的方法

    這篇文章主要介紹了在SpringBoot中驗證用戶上傳的圖片資源,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Spring源碼如何修改Bean的屬性用到的相關(guān)類

    Spring源碼如何修改Bean的屬性用到的相關(guān)類

    這篇文章主要介紹了Spring源碼如何修改Bean的屬性用到的相關(guān)類,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Mybatis-plus操作json字段實戰(zhàn)教程

    Mybatis-plus操作json字段實戰(zhàn)教程

    這篇文章主要介紹了Mybatis-plus操作json字段實戰(zhàn)教程,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • Java volatile的適用場景實例詳解

    Java volatile的適用場景實例詳解

    在本文里我們給大家整理了一篇關(guān)于Java volatile的適用場景實例內(nèi)容和知識點,需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • 解決httpServletRequest.getParameter獲取不到參數(shù)的問題

    解決httpServletRequest.getParameter獲取不到參數(shù)的問題

    這篇文章主要介紹了解決httpServletRequest.getParameter獲取不到參數(shù)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • java實現(xiàn)動態(tài)代理示例分享

    java實現(xiàn)動態(tài)代理示例分享

    動態(tài)代理作為代理模式的一種擴展形式,廣泛應(yīng)用于框架(尤其是基于AOP的框架)的設(shè)計與開發(fā),本文將通過實例來講解Java動態(tài)代理的實現(xiàn)過程。
    2014-03-03
  • Java中valueOf和parseInt的區(qū)別詳解

    Java中valueOf和parseInt的區(qū)別詳解

    這篇文章主要介紹了Java中valueOf和parseInt的區(qū)別詳解,在編程中,遇到類型轉(zhuǎn)換,好像會經(jīng)常用到 parseInt 和 valueOf,當然這里只拿 Integer 類型進行陳述,其他類型也是雷同的,需要的朋友可以參考下
    2024-01-01
  • Spring數(shù)據(jù)庫連接池url參數(shù)踩坑及解決

    Spring數(shù)據(jù)庫連接池url參數(shù)踩坑及解決

    這篇文章主要介紹了Spring數(shù)據(jù)庫連接池url參數(shù)踩坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Mybatis-Plus 全局配置無效的解決方案

    Mybatis-Plus 全局配置無效的解決方案

    這篇文章主要介紹了Mybatis-Plus 全局配置無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 通過實例解析Spring Ioc項目實現(xiàn)過程

    通過實例解析Spring Ioc項目實現(xiàn)過程

    這篇文章主要介紹了Spring Ioc項目實踐過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06

最新評論

康马县| 梨树县| 长治县| 边坝县| 诸暨市| 巴青县| 安仁县| 银川市| 寿光市| 奉化市| 阳西县| 淳化县| 黔南| 玉环县| 阳山县| 弥勒县| 海口市| 泌阳县| 宁远县| 扎兰屯市| 浏阳市| 恩平市| 七台河市| 五大连池市| 阳曲县| 广平县| 平顺县| 商洛市| 淄博市| 横山县| 连城县| 宝鸡市| 岳阳县| 天水市| 桃源县| 兰坪| 封开县| 铜川市| 保康县| 仁怀市| 鸡西市|