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

對SpringBoot項目Jar包進行加密防止反編譯的方案

 更新時間:2024年08月29日 09:57:22   作者:zlfjavahome  
最近項目要求部署到其他公司的服務(wù)器上,但是又不想將源碼泄露出去,要求對正式環(huán)境的啟動包進行安全性處理,防止客戶直接通過反編譯工具將代碼反編譯出來,本文介紹了如何對SpringBoot項目Jar包進行加密防止反編譯,需要的朋友可以參考下

場景: 

最近項目要求部署到其他公司的服務(wù)器上,但是又不想將源碼泄露出去。要求對正式環(huán)境的啟動包進行安全性處理,防止客戶直接通過反編譯工具將代碼反編譯出來。

方案:

第一種方案使用代碼混淆

采用proguard-maven-plugin插件

在單模塊中此方案還算簡單,但是現(xiàn)在項目一般都是多模塊,一個模塊依賴多個公共模塊。那么使用此方案就比較麻煩,配置復(fù)雜,文檔難懂,各模塊之間的調(diào)用在是否混淆時極其容易出錯。

第二種方案使用代碼加密

 采用classfinal-maven-plugin插件

此方案比對上面的方案來說,就簡單了許多。直接配置一個插件就可以實現(xiàn)源碼的安全性保護。并且可以對yml、properties配置文件以及l(fā)ib目錄下的maven依賴進行加密處理。若想指定機器啟動,支持綁定機器,項目加密后只能在特定機器運行。

ClassFinal項目源碼地址

項目操作:

只需要在啟動類的pom.xml文件中加如下插件即可,需要注意的是,改插件時要放到spring-boot-maven-plugin插件后面,否則不起作用。

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <!--
                    1. 加密后,方法體被清空,保留方法參數(shù)、注解等信息.主要兼容swagger文檔注解掃描
                    2. 方法體被清空后,反編譯只能看到方法名和注解,看不到方法體的具體內(nèi)容
                    3. 加密后的項目需要設(shè)置javaagent來啟動,啟動過程中解密class,完全內(nèi)存解密,不留下任何解密后的文件
                    4. 啟動加密后的jar,生成xxx-encrypted.jar,這個就是加密后的jar文件,加密后不可直接執(zhí)行
                    5. 無密碼啟動方式,java -javaagent:xxx-encrypted.jar -jar xxx-encrypted.jar
                    6. 有密碼啟動方式,java -javaagent:xxx-encrypted.jar='-pwd= 密碼' -jar xxx-encrypted.jar
                -->
                <groupId>net.roseboy</groupId>
                <artifactId>classfinal-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <password>#</password><!-- #表示啟動時不需要密碼,事實上對于代碼混淆來說,這個密碼沒什么用,它只是一個啟動密碼 -->
                    <excludes>org.spring</excludes>
                    <packages>${groupId}</packages><!-- 加密的包名,多個包用逗號分開 -->
                    <cfgfiles>application.yml,application-dev.yml</cfgfiles><!-- 加密的配置文件,多個包用逗號分開 -->
                    <libjars>hutool-all.jar</libjars> <!-- jar包lib下面要加密的jar依賴文件,多個包用逗號分開 -->
                    <code>xxxx</code> <!-- 指定機器啟動,機器碼 -->
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>classFinal</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
 
    </build>
 

啟動方式

無密碼啟動:java -javaagent:xxx-encrypted.jar -jar xxx-encrypted.jar

有密碼啟動:

java -javaagent:xxx-encrypted.jar='-pwd=密碼' -jar xxx-encrypted.jar

反編譯效果

啟動包加密之后,方法體被清空,保留方法參數(shù)、注解等信息.主要兼容swagger文檔注解掃描

反編譯只能看到方法名和注解,看不到方法體的具體內(nèi)容

啟動過程中解密class,完全內(nèi)存解密,不留下任何解密后的文件

yml配置文件留下空白

綁定機器啟動

下載到classfinal-fatjar-1.2.1.jar依賴,在當(dāng)前依賴下cmd執(zhí)行java -jar classfinal-fatjar-1.2.1.jar -C命令,會自動生成一串機器碼

將此生成好的機器碼,放到maven插件中的code里面即可。這樣,打包好的項目只能在生成機器碼的機器運行,其他機器則啟動不了項目。

以上就是對SpringBoot項目Jar包進行加密防止反編譯的方案的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot Jar包加密防反編譯的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java 自動安裝校驗TLS/SSL證書

    Java 自動安裝校驗TLS/SSL證書

    這篇文章主要介紹了Java 自動安裝校驗TLS/SSL證書的示例,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10
  • Java調(diào)用HTTPS接口的兩種方式及完整代碼

    Java調(diào)用HTTPS接口的兩種方式及完整代碼

    HTTPS是以安全為目標(biāo)的HTTP通道,在HTTP的基礎(chǔ)上通過傳輸加密和身份認(rèn)證保證了傳輸過程的安全性 ,HTTPS在HTTP的基礎(chǔ)下加SSL,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL,本文給大家介紹了Java調(diào)用https接口的兩種方式及完整代碼,需要的朋友可以參考下
    2025-05-05
  • Java實現(xiàn)人臉識別登錄、注冊等功能(最新完整版)

    Java實現(xiàn)人臉識別登錄、注冊等功能(最新完整版)

    這段時間由于學(xué)校實行靜態(tài)化管理,寢室門和校門都是用了人臉識別的裝置,本系列項目從設(shè)計到實現(xiàn)源碼全部開源免費學(xué)習(xí)使用,對Java實現(xiàn)人臉識別登錄、注冊功能感興趣的朋友一起看看吧
    2022-05-05
  • Java?easyexcel使用教程之導(dǎo)出篇

    Java?easyexcel使用教程之導(dǎo)出篇

    EasyExcel是阿里巴巴開源的一個excel處理框架,以使用簡單,節(jié)省內(nèi)存著稱,下面這篇文章主要給大家介紹了關(guān)于Java?easyexcel使用教程之導(dǎo)出篇的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • JAVA緩存的使用RedisCache、LocalCache、復(fù)合緩存的操作

    JAVA緩存的使用RedisCache、LocalCache、復(fù)合緩存的操作

    RedisCache是基于Redis的緩存,數(shù)據(jù)存儲在內(nèi)存中,并且可以被多個應(yīng)用實例共享,屬于分布式緩存,本文給大家介紹JAVA緩存的使用RedisCache、LocalCache、復(fù)合緩存的相關(guān)操作,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • Java中字符串截取方法詳解及實際應(yīng)用小結(jié)

    Java中字符串截取方法詳解及實際應(yīng)用小結(jié)

    java中截取字符串的常用方法是使用String類的substring方法,本文通過實例代碼給大家介紹Java中字符串截取方法詳解及實際應(yīng)用小結(jié),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • java中使用POI生成Excel并導(dǎo)出過程

    java中使用POI生成Excel并導(dǎo)出過程

    這篇文章主要介紹了java中使用POI生成Excel并導(dǎo)出過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • struts2實現(xiàn)文件下載功能

    struts2實現(xiàn)文件下載功能

    這篇文章主要為大家詳細(xì)介紹了struts2實現(xiàn)文件下載功能,一個非常常見的功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Java多線程基礎(chǔ)

    Java多線程基礎(chǔ)

    這篇文章主要介紹Java多線程基礎(chǔ),線程是進程的一個實體,是CPU調(diào)度和分派的基本單位,它是比進程更小的能獨立運行的基本單位,多線程指在單個程序中可以同時運行多個不同的線程執(zhí)行不同的任務(wù),下面來學(xué)習(xí)具體的詳細(xì)內(nèi)容
    2021-10-10
  • Spring中@Autowired注解作用在方法上和屬性上說明

    Spring中@Autowired注解作用在方法上和屬性上說明

    這篇文章主要介紹了Spring中@Autowired注解作用在方法上和屬性上說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論

增城市| 威远县| 新巴尔虎右旗| 潞西市| 日照市| 南皮县| 荥经县| 荆门市| 武定县| 子长县| 修武县| 黄冈市| 大竹县| 安西县| 波密县| 华池县| 花莲市| 平泉县| 阆中市| 吴川市| 高邑县| 盐津县| 信丰县| 永昌县| 西林县| 平潭县| 大理市| 从化市| 昂仁县| 邵阳县| 商南县| 娄烦县| 安新县| 出国| 鄂伦春自治旗| 永嘉县| 咸宁市| 平舆县| 兰考县| 宣城市| 鸡西市|