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

SpringBoot實(shí)現(xiàn)配置文件加密的方案分享

 更新時(shí)間:2023年11月23日 16:15:02   作者:Rise同志  
項(xiàng)目的數(shù)據(jù)庫(kù)密碼、redis 密碼等明文展示在配置文件中會(huì)有潛在的風(fēng)險(xiǎn),因此采用合適的安全防護(hù)措施是有必要的,下面小編就為大家介紹一下SpringBoot中配置文件加密的方法,希望對(duì)大家有所幫助

1.為什么要對(duì)配置文件關(guān)鍵信息進(jìn)行加密

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test?useSSL=false
    username: root
    password: root
  redis:
    host: 127.0.0.1
    port: 6379
    password: 123456

項(xiàng)目的數(shù)據(jù)庫(kù)密碼、redis 密碼等明文展示在配置文件中會(huì)有潛在的風(fēng)險(xiǎn),比如源碼泄露,或者配置文件暴露,會(huì)導(dǎo)致相關(guān)密碼泄露,造成安全風(fēng)險(xiǎn),因此采用合適的安全防護(hù)措施是有必要的。

2.配置文件加密方案

方案1:jasypt

jasypt 是一個(gè)開(kāi)源的工具類(lèi),可以方便的對(duì) SpringBoot 配置文件中的配置項(xiàng)進(jìn)行對(duì)稱(chēng)加密

集成步驟

1.1 引入Jar包

在maven中引入如下依賴(lài)

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

1.2 對(duì)敏感數(shù)據(jù)生成加密字符串

有以下三種加密方式,請(qǐng)根據(jù)自己需求和項(xiàng)目情況自行選擇:

方式1: 通過(guò)加密工具類(lèi)生成(以下為代碼實(shí)例,可以直接使用)

import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig;

/**
 * 使用Jasypt對(duì)配置文件進(jìn)行加密
 */
public class JasyptUtil {

    /**
     * 加密算法 加密解密保證同一種算法
     * jasypt3.0后,默認(rèn)支持的算法為 PBEWITHHMACSHA512ANDAES_256,這種算法安全性更高,但是需要 Java JDK 1.9+或添加JCE(Java Cryptography Extension 無(wú)限強(qiáng)度權(quán)限策略文件)
     * 使用PBEWithMD5AndDES算法即可
     */
    private static final String algorithm ="PBEWithMD5AndDES";
    //密鑰,對(duì)稱(chēng)加密使用同一個(gè)密鑰進(jìn)行加解密,密鑰自己定義,注意保管
    private static final String key ="test";

    public static void main(String[] args) {
        //加密方法示例
        String encryptInfo = encrypt("root");
        System.out.println(encryptInfo);
        //解密方法示例
        String decryptInfo = decrypt(encryptInfo);
        System.out.println(decryptInfo);
    }

    /**
     * 加密
     *
     * @param value 明文
     * @return
     */
    public static String encrypt(String value) {
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
        // 指定算法
        config.setAlgorithm(algorithm);
        // 指定秘鑰
        config.setPassword(key);
        encryptor.setConfig(config);
        // 加密數(shù)據(jù)
        return encryptor.encrypt(value);
    }

    /**
     * 解密
     *
     * @param value 密文
     * @return
     */
    public static String decrypt(String value) {
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
        config.setAlgorithm(algorithm);
        config.setPassword(key);
        encryptor.setConfig(config);
        // 解密數(shù)據(jù)
        return encryptor.decrypt(value);
    }
}

方式2: 執(zhí)行 jar包,通過(guò)命令行的模式獲取(不推薦,操作起來(lái)不夠方便)

java -cp ./jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI password="test" algorithm=PBEWithMD5AndDES input=root

輸出結(jié)果:

Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.161-b12

----ARGUMENTS-------------------

input: root
algorithm: PBEWithMD5AndDES
password: ADUMDFUOV7834*

----OUTPUT----------------------

dXTlEeOApsY5oCeCQEo4Gg==

注:

  • password:用來(lái)加密的密鑰
  • algorithm:加密算法 PBEWithMD5AndDES/PBEWITHHMACSHA512ANDAES_256。使用PBEWithMD5AndDES即可
  • input:后接的屬性為需要加密的參數(shù)
  • OUTPUT輸出的值即為加密后的值

方式三: 使用Maven插件(推薦,使用起來(lái)比較快捷)

Maven中引入jasypt插件

<plugin>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-maven-plugin</artifactId>
    <version>3.0.3</version>
    <configuration>
        <path>file:src/main/resources/application.yml</path>
    </configuration>
</plugin>

注:

path標(biāo)簽中的路徑請(qǐng)根據(jù)自己配置文件路徑配置

修改配置文件

server:
  port: 8030
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useSSL=false
    driver-class-name: com.mysql.jdbc.Driver
    username: DEC(root)
    password: DEC(root)
jasypt:
   encryptor:
     password: test
  • 需要加密的數(shù)據(jù)使用DEC()包起來(lái)
  • password為密鑰自定義

Maven加密命令

mvn jasypt:encrypt -Djasypt.encryptor.password=test

執(zhí)行完該命令之后,DEC中的內(nèi)容會(huì)自動(dòng)被替換為ENC(加密內(nèi)容)

Maven解密命令

mvn jasypt:decrypt -Djasypt.encryptor.password=test

1.3 使用

配置文件中按下圖添加密鑰和需要加密的屬性之后,啟動(dòng)時(shí)會(huì)自動(dòng)對(duì)敏感數(shù)據(jù)進(jìn)行解密

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useSSL=false
    driver-class-name: com.mysql.jdbc.Driver
    username: ENC(加密之后的屬性)
    password: ENC(加密之后的屬性)
jasypt:
   encryptor:
     password: 自定義的密鑰

1.4 安全事項(xiàng)

由于該方案采用的是對(duì)稱(chēng)加密,一旦泄露密鑰,相關(guān)密碼將暴露,將密鑰配置在配置文件中,非常不安全,推薦將密鑰添加到啟動(dòng)命令中,降低暴露風(fēng)險(xiǎn)

java -jar demo.jar --Djasypt.encryptor.password=test

以上就是SpringBoot實(shí)現(xiàn)配置文件加密的方案分享的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot配置文件加密的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java的方法詳解

    Java的方法詳解

    方法類(lèi)似于C語(yǔ)言中的函數(shù),是包含特定功能的代碼塊,必須定義在類(lèi)中、main方法外部,本質(zhì)上是一個(gè)造輪子的過(guò)程—— 將重復(fù)使用的邏輯包裝成方法,需要時(shí)直接調(diào)用,無(wú)需重復(fù)編寫(xiě),下面通過(guò)示例詳解Java的方法,感興趣的朋友一起看看吧
    2026-02-02
  • 詳解基于Spring Boot/Spring Session/Redis的分布式Session共享解決方案

    詳解基于Spring Boot/Spring Session/Redis的分布式Session共享解決方案

    本篇文章主要介紹了詳解基于Spring Boot/Spring Session/Redis的分布式Session共享解決方案 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java 讀寫(xiě)Properties配置文件詳解

    Java 讀寫(xiě)Properties配置文件詳解

    這篇文章主要介紹了Java 讀寫(xiě)Properties配置文件詳解的相關(guān)資料,這里舉例說(shuō)明該如何實(shí)現(xiàn),具有參考價(jià)值,需要的朋友可以參考下
    2016-11-11
  • Spring WebFlux使用深度實(shí)踐指南

    Spring WebFlux使用深度實(shí)踐指南

    本文詳細(xì)介紹了SpringWebFlux的使用,包括構(gòu)建ReactiveRESTAPI、響應(yīng)式數(shù)據(jù)庫(kù)訪問(wèn)(R2DBC)和WebSocket實(shí)時(shí)通信,通過(guò)這些功能,開(kāi)發(fā)者可以構(gòu)建高性能、可擴(kuò)展的響應(yīng)式Web應(yīng)用,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • SpringBoot+Beetl實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)庫(kù)DDL的示例代碼

    SpringBoot+Beetl實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)庫(kù)DDL的示例代碼

    最近公司里有一個(gè)新的需求,需要導(dǎo)出數(shù)據(jù)庫(kù)元數(shù)據(jù)表中存儲(chǔ)的表的 DDL 語(yǔ)句,而在元數(shù)據(jù)表中數(shù)據(jù)源的類(lèi)型龐大,少則十幾種多則達(dá)到幾十種,各種數(shù)據(jù)庫(kù)類(lèi)型都有,本篇文章就從這個(gè)模版引擎來(lái)入手介紹如何實(shí)現(xiàn)功能,需要的朋友可以參考下
    2025-06-06
  • Java幾個(gè)重要的關(guān)鍵字詳析

    Java幾個(gè)重要的關(guān)鍵字詳析

    這篇文章主要介紹了Java幾個(gè)重要的關(guān)鍵字詳析,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考一下,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助
    2022-07-07
  • Java實(shí)現(xiàn)利用廣度優(yōu)先遍歷(BFS)計(jì)算最短路徑的方法

    Java實(shí)現(xiàn)利用廣度優(yōu)先遍歷(BFS)計(jì)算最短路徑的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)利用廣度優(yōu)先遍歷(BFS)計(jì)算最短路徑的方法,實(shí)例分析了廣度優(yōu)先遍歷算法的原理與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Spring Boot使用yml格式進(jìn)行配置的方法

    Spring Boot使用yml格式進(jìn)行配置的方法

    很多springboot項(xiàng)目使用的是yml格式,主要目的是方便對(duì)讀懂其他人的項(xiàng)目,下面小編通過(guò)本文給大家分享Spring Boot使用yml格式進(jìn)行配置的方法,需要的朋友參考下吧
    2018-04-04
  • SSH框架網(wǎng)上商城項(xiàng)目第30戰(zhàn)之項(xiàng)目總結(jié)(附源碼下載地址)

    SSH框架網(wǎng)上商城項(xiàng)目第30戰(zhàn)之項(xiàng)目總結(jié)(附源碼下載地址)

    這篇文章主要介紹了SSH框架網(wǎng)上商城項(xiàng)目第30戰(zhàn)之項(xiàng)目總結(jié),并附源碼下載地址,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Java中isAssignableFrom的用法詳解

    Java中isAssignableFrom的用法詳解

    下面小編就為大家?guī)?lái)一篇Java中isAssignableFrom的用法詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01

最新評(píng)論

吴江市| SHOW| 阜平县| 澄迈县| 江达县| 岳阳市| 普洱| 客服| 大安市| 手游| 包头市| 忻州市| 资兴市| 绥滨县| 酒泉市| 霍山县| 海晏县| 团风县| 三江| 泰顺县| 新邵县| 绵阳市| 昌图县| 登封市| 南川市| 康马县| 彩票| 葫芦岛市| 青阳县| 仁寿县| 莫力| 彭阳县| 洛川县| 突泉县| 天津市| 手机| 封丘县| 南漳县| 中方县| 锡林郭勒盟| 景洪市|