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

springboot使用jasypt加密庫(kù)實(shí)現(xiàn)數(shù)據(jù)庫(kù)加解密示例代碼

 更新時(shí)間:2024年04月24日 11:37:23   作者:把魚(yú)入護(hù)  
這篇文章主要給大家介紹了關(guān)于springboot使用jasypt加密庫(kù)實(shí)現(xiàn)數(shù)據(jù)庫(kù)加解密的相關(guān)資料,Jasypt是一個(gè)用于配置文件加密的Java庫(kù),它可以用來(lái)加密和解密配置文件中的敏感信息,如數(shù)據(jù)庫(kù)密碼、API?密鑰等,需要的朋友可以參考下

 一、背景說(shuō)明

在服務(wù)中不可避免的需要使用到一些秘鑰(數(shù)據(jù)庫(kù)、redis等)開(kāi)發(fā)和測(cè)試環(huán)境還好,但生產(chǎn)如果采用明文配置將會(huì)有安全問(wèn)題,jasypt是一個(gè)通用的加解密庫(kù),可以使用它。

jasypt默認(rèn)使用StringEncryptor來(lái)進(jìn)行加解密,也可以自定義自己的加解密類(lèi)來(lái)替換它 。

二、Jasypt介紹 

2.1 Jasypt是什么?

Jasypt是一個(gè)Java庫(kù),Java 加密包,用于加密和解密敏感數(shù)據(jù),例如密碼和API密鑰。

它允許開(kāi)發(fā)者以最小的努力為他/她的項(xiàng)目添加基本的加密功能,而且不需要對(duì)密碼學(xué)的工作原理有深刻的了解。

使用Jasypt對(duì)密碼進(jìn)行加解密可以保證密碼的安全性。

2.2 Jasypt的功能特性

  • 高安全性、基于標(biāo)準(zhǔn)的加密技術(shù),既可用于單向加密也可用于雙向加密。
  • 加密密碼、文本、數(shù)字、二進(jìn)制文件…與Hibernate的透明集成。
  • 適合集成到基于Spring的應(yīng)用程序中,也可與Spring Security透明地集成。
  • 對(duì)應(yīng)用程序的配置(即數(shù)據(jù)源)進(jìn)行加密的綜合能力。
  • 在多處理器/多核系統(tǒng)中具有高性能加密的特殊功能。
  • 開(kāi)放的API,可與任何JCE供應(yīng)商一起使用。
  • 提供了一組內(nèi)置的加密和解密算法,用于保護(hù)敏感數(shù)據(jù)。
    • 其中包括使用對(duì)稱(chēng)加密算法(如AES和Blowfish)和非對(duì)稱(chēng)加密算法(如RSA)進(jìn)行加密和解密。

三、示例1:在Spring Boot中使用Jasypt加密和解密敏感數(shù)據(jù)

  • 在Spring Boot中使用Jasypt加密和解密敏感數(shù)據(jù)非常簡(jiǎn)單。
  • 您只需要在Spring Boot應(yīng)用程序中添加Jasypt依賴(lài)項(xiàng),并在應(yīng)用程序配置文件中指定加密和解密密鑰即可。

以下是在Spring Boot應(yīng)用程序中使用Jasypt加密和解密密碼的示例代碼:

3.1 添加Jasypt依賴(lài)項(xiàng)

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

3.2 配置加密和解密密鑰

在應(yīng)用程序配置文件(例如application.properties或application.yml)中指定加密和解密密鑰。
例如:

jasypt.encryptor.password=mySecretKey

3.3 在應(yīng)用程序中使用加密和解密功能

在應(yīng)用程序中使用Jasypt加密和解密密碼非常簡(jiǎn)單。

您只需要使用@Autowired注釋注入org.jasypt.encryption.StringEncryptor bean,

并使用encrypt和decrypt方法加密和解密密碼。

例如:

/**
     * 對(duì)數(shù)據(jù)庫(kù)進(jìn)行加密
     *
     * @param passWord
     * @return
     */
    @GetMapping("/encrypt")
    public String jasyptEncrypt(String passWord) {
        StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();
        EnvironmentPBEConfig config = new EnvironmentPBEConfig();

        config.setAlgorithm("PBEWithMD5AndDES");          // 加密的算法,這個(gè)算法是默認(rèn)的
        config.setPassword("SDHYDZ");                        // 加密的密鑰,隨便自己填寫(xiě),很重要千萬(wàn)不要告訴別人
        standardPBEStringEncryptor.setConfig(config);
        String encryptedText = standardPBEStringEncryptor.encrypt(passWord);
        return encryptedText;
    }

    /**
     * 對(duì)數(shù)據(jù)庫(kù)進(jìn)行解密
     *
     * @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文件中添加依賴(lài)

<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       #加密算法,不配置使用默認(rèn)的
    password: your_secret_password    #加密秘鑰

 在配置文件中配置秘鑰仍可能存在密碼泄露的可能,因此我將秘鑰放在項(xiàng)目啟動(dòng)是加載的:

@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)

總結(jié) 

到此這篇關(guān)于springboot使用jasypt加密庫(kù)實(shí)現(xiàn)數(shù)據(jù)庫(kù)加解密的文章就介紹到這了,更多相關(guān)springboot數(shù)據(jù)庫(kù)加解密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java HashMap的keyset實(shí)例

    java HashMap的keyset實(shí)例

    簡(jiǎn)單地說(shuō),在keyset方法返回的set上做修改會(huì)改變?cè)瓉?lái)hashmap,這也許不是你想要的,于是形成一個(gè)隱藏的bug
    2013-04-04
  • MyBatis-Ext快速入門(mén)實(shí)戰(zhàn)

    MyBatis-Ext快速入門(mén)實(shí)戰(zhàn)

    MyBatis-Ext是MyBatis的增強(qiáng)擴(kuò)展,和我們平常用的Mybatis-plus非常類(lèi)似,本文主要介紹了MyBatis-Ext快速入門(mén)實(shí)戰(zhàn),感興趣的可以了解一下
    2021-10-10
  • spring整合struts2過(guò)程詳解

    spring整合struts2過(guò)程詳解

    這篇文章主要介紹了spring整合struts2過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • java字符串切割實(shí)例學(xué)習(xí)(獲取文件名)

    java字符串切割實(shí)例學(xué)習(xí)(獲取文件名)

    在Java中處理一些路徑相關(guān)的問(wèn)題的時(shí)候,如要取出ie瀏覽器上傳文件的文件名,由于ie會(huì)把整個(gè)文件路徑都作為文件名上傳,需要用java.lang.String中的replaceAll或者split來(lái)處理,下面看看使用方法
    2013-12-12
  • 使用AOP的@Around后無(wú)返回值的解決

    使用AOP的@Around后無(wú)返回值的解決

    這篇文章主要介紹了使用AOP的@Around后無(wú)返回值的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Java編程實(shí)現(xiàn)對(duì)十六進(jìn)制字符串異或運(yùn)算代碼示例

    Java編程實(shí)現(xiàn)對(duì)十六進(jìn)制字符串異或運(yùn)算代碼示例

    這篇文章主要介紹了Java編程實(shí)現(xiàn)對(duì)十六進(jìn)制字符串異或運(yùn)算代碼示例,簡(jiǎn)述了異或運(yùn)算以及具體實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Java吃貨聯(lián)盟訂餐系統(tǒng)代碼實(shí)例

    Java吃貨聯(lián)盟訂餐系統(tǒng)代碼實(shí)例

    這篇文章主要介紹了Java訂餐系統(tǒng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 詳解Java類(lèi)動(dòng)態(tài)加載和熱替換

    詳解Java類(lèi)動(dòng)態(tài)加載和熱替換

    本文主要介紹類(lèi)加載器、自定義類(lèi)加載器及類(lèi)的加載和卸載等內(nèi)容,并舉例介紹了Java類(lèi)的熱替換。
    2021-05-05
  • 分析Java中為什么String不可變

    分析Java中為什么String不可變

    Java中為什么String是不可變性的。今天我們從多角度解析為什么Java把String做成不可變的。
    2021-06-06
  • Spring中MVC模塊代碼詳解

    Spring中MVC模塊代碼詳解

    這篇文章主要介紹了Spring中MVC模塊代碼詳解,涉及Controller的簡(jiǎn)單介紹,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-11-11

最新評(píng)論