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

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

 更新時間:2026年03月08日 10:51:37   作者:普通網(wǎng)友  
Jasypt是一個Java簡易加密庫,用于加密配置文件中的敏感信息,如數(shù)據(jù)庫密碼,這篇文章主要介紹了JAVA集成Jasypt進行加密、解密(SpringBoot)的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前言

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

一、Jasypt 簡介

Jasypt 是 Java 平臺的簡化加密工具,支持對文本和數(shù)據(jù)進行加密和解密,尤其適合應用于 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ù)據(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 是加密密鑰(與我們在配置文件中設置的 mysecretkey 一致)
  • algorithm 是加密算法,這里使用 PBEWithMD5AndDES

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

5MG1sSxAx+EeJsBdmcVdKg==

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

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

  • application.properties:

    spring.datasource.password=ENC(5MG1sSxAx+EeJsBdmcVdKg==)

  • application.yml:

    spring:
    datasource:
    password: ENC(5MG1sSxAx+EeJsBdmcVdKg==)

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

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

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

三、自定義 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();
        // 配置加密密鑰,務必保密
        config.setPassword("mysecretkey");
        // 設置加密算法
        config.setAlgorithm("PBEWithMD5AndDES");
        // 設置密鑰迭代次數(shù),影響破解難度
        config.setKeyObtentionIterations("1000");
        // 設置加密池的大小,1 表示單個實例使用
        config.setPoolSize("1");
        // 鹽生成器類,防止彩虹表攻擊
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        // 設置輸出編碼類型為 base64
        config.setStringOutputType("base64");
        encryptor.setConfig(config);
        return encryptor;
    }
}

2. 參數(shù)說明:

  • Password: 加密和解密時使用的密鑰。應與配置文件中的 jasypt.encryptor.password 保持一致。
  • Algorithm: 加密算法。可以選擇 PBEWithMD5AndDES、PBEWithSHA1AndDESede 等。
  • KeyObtentionIterations: 密鑰生成的迭代次數(shù),值越高,破解難度越大。
  • SaltGeneratorClassName: 鹽生成器,防止使用預計算好的哈希表(彩虹表)破解。
  • StringOutputType: 設置輸出的編碼方式。通常使用 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();
        // 設置加密密鑰,與應用程序中使用的密鑰一致
        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(): 加密方法,將明文轉換為加密后的文本。
  3. decrypt(): 解密方法,將加密后的文本還原為明文。
  4. assertEquals(): 測試框架中的斷言方法,用于驗證加密和解密是否正確。

測試輸出:

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

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

五、總結

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

集成步驟總結:

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

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

參考文檔:

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

相關文章

  • Spring Boot中進行 文件上傳和 文件下載功能實現(xiàn)

    Spring Boot中進行 文件上傳和 文件下載功能實現(xiàn)

    開發(fā)Wb應用時,文件上傳是很常見的一個需求,瀏覽器 通過 表單形式 將 文件 以 流的形式傳遞 給 服務器,服務器再對上傳的數(shù)據(jù)解析處理,下面將通過一個案例講解使用 SpringBoot 實現(xiàn) 文件上傳,感興趣的朋友一起看看吧
    2024-07-07
  • Java HttpClient執(zhí)行請求時配置cookie流程詳細講解

    Java HttpClient執(zhí)行請求時配置cookie流程詳細講解

    這篇文章主要介紹了Java HttpClient執(zhí)行請求時配置cookie流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-02-02
  • 解析Java繼承中方法的覆蓋和重載

    解析Java繼承中方法的覆蓋和重載

    這篇文章主要介紹了Java繼承中方法的覆蓋和重載的詳細概念及用法,非常的實用,這里推薦給大家,有需要的小伙伴可以參考下。
    2015-05-05
  • SpringBoot讀取多環(huán)境配置文件的幾種方式

    SpringBoot讀取多環(huán)境配置文件的幾種方式

    這篇文章主要給大家介紹了SpringBoot讀取多環(huán)境配置文件的幾種方式,文章通過代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2023-10-10
  • Java實例講解注解的應用

    Java實例講解注解的應用

    JAVA注解?Annotation(注解)是JDK1.5及以后版本引入的。它可以用于創(chuàng)建文檔,跟蹤代碼中的依賴性,甚至執(zhí)行基本編譯時檢查。注解是以‘@注解名’在代碼中存在的
    2022-06-06
  • 簡單了解Java垃圾回收器的種類

    簡單了解Java垃圾回收器的種類

    這篇文章主要介紹了簡單了解Java垃圾回收器的種類,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • spring緩存代碼詳解

    spring緩存代碼詳解

    這篇文章主要介紹了spring緩存代碼詳解,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • springboot實現(xiàn)發(fā)送QQ郵箱

    springboot實現(xiàn)發(fā)送QQ郵箱

    這篇文章主要為大家詳細介紹了springboot實現(xiàn)發(fā)送QQ郵箱,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Java異常處理的最佳實踐分享

    Java異常處理的最佳實踐分享

    在我多年的Java開發(fā)經(jīng)驗中,異常處理無疑是項目開發(fā)中必寫的模塊,雖然Java它本身提供了異常處理機制,但很多開發(fā)者在使用過程中往往會犯一些常見的錯誤,導致程序出現(xiàn)不必要的異常捕獲和性能問題,在本文中,我將分享一些關于Java異常處理的實用技巧,需要的朋友可以參考下
    2025-08-08
  • SpringBoot通過tractId操作日志鏈路跟蹤

    SpringBoot通過tractId操作日志鏈路跟蹤

    這篇文章給大家介紹SpringBoot通過tractId操作日志鏈路跟蹤,通過tractId,即可完成對從一個請求進入系統(tǒng)到請求結束的日志追蹤,本文給大家介紹的非常詳細,需要的朋友參考下吧
    2023-10-10

最新評論

黄浦区| 杭锦旗| 河池市| 上虞市| 类乌齐县| 黄浦区| 奉新县| 郧西县| 贵港市| 松潘县| 永德县| 三都| 东乡族自治县| 丰宁| 泾川县| 房产| 禄劝| 尉犁县| 南皮县| 旬阳县| 永善县| 志丹县| 富民县| 涪陵区| 娱乐| 应城市| 张北县| 岳池县| 枣庄市| 阿鲁科尔沁旗| 佳木斯市| 奉节县| 巍山| 江阴市| 新邵县| 阿荣旗| 苍溪县| 崇明县| 新余市| 乌拉特前旗| 长春市|