欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JAVA(SpringBoot)集成Jasypt進行加密、解密功能

 更新時間:2024年09月25日 09:27:32   作者:cccl.  
Jasypt是一個Java庫,專門用于簡化加密和解密操作,提供多種加密算法支持,集成到SpringBoot等框架中,通過使用Jasypt,可以有效保護配置文件中的敏感信息,如數(shù)據(jù)庫密碼等,避免被未授權(quán)訪問,Jasypt還支持自定義加密器,提高擴展性和安全性,適用于各種需要加密保護應(yīng)用場景

一、Jasypt 簡介

1、Jasypt 是一個 Java 庫,用于簡化加密和解密任務(wù)。它提供了方便的 API,可以輕松地對字符串進行加密,并在需要時進行解密。
2、保護敏感配置信息:在配置文件中存儲敏感信息時,使用加密可以防止這些信息被未經(jīng)授權(quán)的人員訪問。
3、靈活的加密方式:Jasypt 支持多種加密算法和配置選項,可以根據(jù)具體需求進行定制。
4、與 Spring Boot 集成方便:可以通過簡單的配置將 Jasypt 集成到 Spring Boot 應(yīng)用中,無需大量的額外代碼。

二、Jasypt功能

(1)、加密和解密

字符串加密:
可以對敏感的字符串信息進行加密,如數(shù)據(jù)庫密碼、API 密鑰、用戶密碼等。通過指定加密算法和密鑰,可以將明文轉(zhuǎn)換為密文,保護敏感信息不被輕易獲取。例如,可以使用 Jasypt 加密數(shù)據(jù)庫連接密碼,然后在應(yīng)用程序中使用加密后的密碼進行數(shù)據(jù)庫連接,確保密碼的安全性。

(2)、密鑰管理

密鑰生成:
Jasypt 可以生成加密密鑰,確保密鑰的隨機性和安全性。密鑰的生成可以基于不同的算法和參數(shù),以滿足不同的安全需求。
密鑰存儲和檢索:
Jasypt 提供了多種方式來存儲和檢索加密密鑰??梢詫⒚荑€存儲在環(huán)境變量、配置文件、數(shù)據(jù)庫或其他安全存儲中。在應(yīng)用程序中,可以通過指定密鑰存儲的位置和方式來獲取加密密鑰。

(3)、加密算法支持

多種加密算法:
Jasypt 支持多種加密算法,如 AES、DES、RSA 等??梢愿鶕?jù)不同的安全需求選擇合適的加密算法。
算法參數(shù)配置:
Jasypt 允許對加密算法的參數(shù)進行配置,如密鑰長度、迭代次數(shù)、鹽值等。這些參數(shù)可以根據(jù)具體的安全需求進行調(diào)整,以提高加密的強度。

(4)、集成和擴展性

與框架集成:
Jasypt 可以與各種 Java 框架集成,如 Spring、Spring Boot、Hibernate 等??梢栽谶@些框架中使用 Jasypt 進行加密和解密操作,保護框架配置文件和敏感信息。
自定義加密器:
Jasypt 提供了自定義加密器的接口,可以根據(jù)特定的需求實現(xiàn)自己的加密算法和邏輯。這使得 Jasypt 具有很高的擴展性,可以滿足不同應(yīng)用場景的加密需求。

三、依賴配置

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

四、配置Jasypt

#配置文件加密
jasypt:
encryptor:
  # 秘鑰(用于加密和解密的密碼,需妥善保管,確保安全性)
  # 這里的秘鑰一般不會寫在配置文件中,為了方便理解暫時放在這里
  password: GrZGCCeUwLJ
  # 指定加密算法為基于密碼的加密,結(jié)合了 HMAC-SHA512 和 AES-256,提供較強的加密強度
  algorithm: PBEWITHHMACSHA512ANDAES_256
  # 在生成加密密鑰時的迭代次數(shù),更多的迭代次數(shù)通常會增加密鑰的安全性,但也會增加計算時間
  key-obtention-iterations: 100
  # 資源池的大小相關(guān)
  pool-size: 1
  # 指定用于生成初始化向量(IV)的類為隨機初始化向量生成器,增加加密安全性
  iv-generator-classname: org.jasypt.iv.RandomIvGenerator
  # 指定用于生成鹽(salt)的類為隨機鹽生成器,增加加密安全性
  salt-generator-classname: org.jasypt.salt.RandomSaltGenerator
  # 指定加密后的字符串輸出格式為 Base64 編碼,方便存儲和傳輸
  string-output-type: base64
  property:
    # 加密屬性值的前綴,用于標(biāo)識加密的屬性
    prefix: TEST(
    # 加密屬性值的后綴,用于標(biāo)識加密的屬性
    suffix: )      

五、方案示例

(1)、創(chuàng)建SpringBootConfigEncrypt 實現(xiàn) CommandLineRunner接口 項目啟動時執(zhí)行加密測試

import org.jasypt.encryption.StringEncryptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
@Component
public class SpringBootConfigEncrypt implements CommandLineRunner {
    @Autowired
    private ApplicationContext applicationContext;
    /**
     * 自動注入 Jasypt 的字符串加密器,用于加密和解密操作。
     */
    @Autowired
    private StringEncryptor encryptor;
    @Override
    public void run(String... args) throws Exception {
        Environment environment = applicationContext.getBean(Environment.class);
        // 獲取配置文件中數(shù)據(jù)庫用戶名和密碼的原始明文。
        String oldUserName = environment.getProperty("spring.datasource.druid.test.username");
        String oldPassword = environment.getProperty("spring.datasource.druid.test.password");
        // 對用戶名和密碼進行加密。
        String encryptUserName = encrypt(oldUserName);
        String encryptPassword = encrypt(oldPassword);
        // 打印加密前后的結(jié)果對比
        System.out.println("MySQL原始明文密碼為:" + oldUserName);
        System.out.println("MySQL原始明文密碼為:" + oldPassword);
        System.out.println("*********************************************");
        System.out.println("MySQL原始明文密碼加密后的結(jié)果為:" + encryptUserName);
        System.out.println("MySQL原始明文密碼加密后的結(jié)果為:" + encryptPassword);
    }
    /**
     * 使用加密器對給定的字符串進行加密。
     *
     * @param originPassord 待加密的原始密碼。
     * @return 加密后的字符串。
     */
    private String encrypt(String originPassord) {
        return encryptor.encrypt(originPassord);
    }
    /**
     * 使用加密器對給定的加密字符串進行解密。
     *
     * @param encryptedPassword 待解密的加密密碼。
     * @return 解密后的字符串。
     */
    private String decrypt(String encryptedPassword) {
        return encryptor.decrypt(encryptedPassword);
    }
}

(2)、運行項目,控制臺打?。?/h3>

(3)、將配置文件中的明文替換為加密后的

更換完成之后,重新啟動項目如果重啟成功則加密完成。

(4)、TEST()介紹

這里的 “TEST” 有何特殊含義呢?實際上,使用 “TEST()” 來包裹加密密鑰是一種約定俗成的表示方式。這樣做的目的是為了明確標(biāo)識出被加密的內(nèi)容,使得在讀取和處理配置文件時能夠更容易地識別出加密字段。“TEST” 本身并沒有特定的硬性規(guī)定的含義,它只是作為一種標(biāo)記,讓系統(tǒng)知道其中的內(nèi)容是經(jīng)過加密處理的。
如果想要自定義前后綴標(biāo)記,比如將其換成 “ENCRYPT()” 來標(biāo)記加密字段,此時只需要在配置文件中進行如下配置即可:

4.1修改 jasypt.encryptor.property.prefix 屬性

4.2 修改數(shù)據(jù)庫配置 username、password屬性

以上第一種方案就算完成了。

注意密鑰不要寫在配置文件中上述方式仍存在加密密鑰泄露的風(fēng)險,可以將密鑰從配置文件中移除,使用以下三種方式:

方式一:直接以程序啟動時的命令行參數(shù)形式帶入。
示例:java -jar app.jar --jasypt.encryptor.password=ENCRYPT。
方式二:直接以程序啟動時的應(yīng)用環(huán)境變量形式帶入。
示例:java -Djasypt.encryptor.password=ENCRYPT-jar app.jar。
方式三:作為系統(tǒng)環(huán)境變量的方式來帶入
1.打開全局配置文件:      sudo vim /etc/profile
2.編輯全局配置文件:      export JASYPT_ENCRYPT_PASSWORD=ENCRYPT
3.重載profile配置文件:  source /etc/profile
4.修改jasypt.encryptor.password屬性
jasypt:
  encryptor:
    password: ${JASYPT_ENCRYPT_PASSWORD}

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

相關(guān)文章

  • SpringBoot整合Mybatis與druid實現(xiàn)流程詳解

    SpringBoot整合Mybatis與druid實現(xiàn)流程詳解

    這篇文章主要介紹了springboot整合mybatis plus與druid詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的下伙伴可以參考一下
    2022-10-10
  • 基于Maven pom文件使用分析

    基于Maven pom文件使用分析

    本文詳細介紹了Maven項目的核心配置文件pom.xml的結(jié)構(gòu)和各個元素的用途,包括項目基礎(chǔ)信息、依賴管理、倉庫配置、構(gòu)建配置、版本控制、分發(fā)和報告配置等,幫助讀者全面了解Maven項目的構(gòu)建和管理過程
    2024-12-12
  • Java SE實現(xiàn)多人聊天室功能

    Java SE實現(xiàn)多人聊天室功能

    這篇文章主要為大家詳細介紹了Java SE實現(xiàn)多人聊天室功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Java多態(tài)性定義與用法實例詳解

    Java多態(tài)性定義與用法實例詳解

    這篇文章主要介紹了Java多態(tài)性定義與用法,較為詳細的分析了多態(tài)的概念、功能以及java定義與實現(xiàn)面向?qū)ο蠖鄳B(tài)性的相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • SpringBoot整合Thymeleaf小項目及詳細流程

    SpringBoot整合Thymeleaf小項目及詳細流程

    這篇文章主要介紹了SpringBoot整合Thymeleaf小項目,本項目使用SpringBoot開發(fā),jdbc5.1.48,主要涉及到Mybatis的使用,Thymeleaf的使用,用戶密碼加密,驗證碼的設(shè)計,圖片的文件上傳(本文件上傳到本地,沒有傳到數(shù)據(jù)庫)登錄過濾,需要的朋友可以參考下
    2022-03-03
  • Java多線程之同步工具類Exchanger

    Java多線程之同步工具類Exchanger

    這篇文章主要介紹了Java多線程之同步工具類Exchanger,Exchanger 是一個用于線程間協(xié)作的工具類,Exchanger用于進行線程間的數(shù)據(jù)交換,它提供一個同步點,在這個同步點,兩個線程可以交換彼此的數(shù)據(jù),下面來看看具體內(nèi)容吧
    2021-10-10
  • Java 異常詳解

    Java 異常詳解

    本文主要介紹了異常與錯誤的區(qū)別,異常的體現(xiàn)分類,異常的處理機制,如何自定義異常等,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • Java中的日期時間類實例詳解(Date、Calendar、DateFormat)

    Java中的日期時間類實例詳解(Date、Calendar、DateFormat)

    在JDK1.0中,Date類是唯一的一個代表時間的類,但是由于Date類不便于實現(xiàn)國際化,所以從JDK1.1版本開始,推薦使用Calendar類進行時間和日期處理,這篇文章主要介紹了Java中的日期時間類詳解(Date、Calendar、DateFormat),需要的朋友可以參考下
    2023-11-11
  • tomcat啟動完成執(zhí)行 某個方法 定時任務(wù)(Spring)操作

    tomcat啟動完成執(zhí)行 某個方法 定時任務(wù)(Spring)操作

    這篇文章主要介紹了tomcat啟動完成執(zhí)行 某個方法 定時任務(wù)(Spring)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • SpringDataJpa:JpaRepository增刪改查操作

    SpringDataJpa:JpaRepository增刪改查操作

    這篇文章主要介紹了SpringDataJpa:JpaRepository增刪改查操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評論