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

對SpringBoot項目Jar包進(jìn)行加密防止反編譯

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

場景

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

方案

第一種方案使用代碼混淆

采用proguard-maven-plugin插件

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

第二種方案使用代碼加密

采用classfinal-maven-plugin插件

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

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> <!-- 指定機(jī)器啟動,機(jī)器碼 -->
                </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配置文件留下空白

綁定機(jī)器啟動

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

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

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

相關(guān)文章

  • Java基礎(chǔ)教程之String深度分析

    Java基礎(chǔ)教程之String深度分析

    這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)教程之String的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • SpringBoot多租戶配置與實現(xiàn)示例

    SpringBoot多租戶配置與實現(xiàn)示例

    本文詳細(xì)介紹了在SpringBoot中實現(xiàn)多租戶架構(gòu)的方法和步驟,包括配置數(shù)據(jù)源、Hibernate攔截器、租戶解析器等,以共享數(shù)據(jù)庫、共享數(shù)據(jù)表的方式,確保數(shù)據(jù)隔離和安全性,感興趣的可以了解一下
    2024-09-09
  • Java設(shè)計模式之組合模式深入刨析

    Java設(shè)計模式之組合模式深入刨析

    組合模式,又叫部分整體模式,它創(chuàng)建了對象組的數(shù)據(jù)結(jié)構(gòu)組合模式使得用戶對單個對象和組合對象的訪問具有一致性。本文將通過示例為大家詳細(xì)介紹一下組合模式,需要的可以參考一下
    2022-05-05
  • Java獲取用戶訪問IP及地理位置的方法詳解

    Java獲取用戶訪問IP及地理位置的方法詳解

    這篇文章主要介紹了Java獲取用戶訪問IP及地理位置的方法,結(jié)合實例形式詳細(xì)分析了Java基于百度地圖開放平臺獲取用戶訪問IP及地理位置相關(guān)操作技巧,需要的朋友可以參考下
    2020-04-04
  • 使用Java實現(xiàn)一個不同難度(高、中、低)的猜數(shù)字游戲

    使用Java實現(xiàn)一個不同難度(高、中、低)的猜數(shù)字游戲

    本文介紹了一個增強(qiáng)版的猜數(shù)字游戲,包括菜單打印、游戲維持、邏輯功能選擇和源代碼展示,游戲通過隨機(jī)數(shù)生成和邏輯判斷來維持游戲進(jìn)程,用戶可以選擇不同的難度,源代碼展示了如何實現(xiàn)這三種不同難度的猜數(shù)字游戲,為玩家?guī)砀嗵魬?zhàn)和樂趣,需要的朋友可以參考下
    2024-09-09
  • druid?handleException執(zhí)行流程源碼解析

    druid?handleException執(zhí)行流程源碼解析

    這篇文章主要為大家介紹了druid?handleException執(zhí)行流程源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 攔截Druid數(shù)據(jù)源自動注入帳密解密實現(xiàn)詳解

    攔截Druid數(shù)據(jù)源自動注入帳密解密實現(xiàn)詳解

    這篇文章主要為大家介紹了攔截Druid數(shù)據(jù)源自動注入帳密解密實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • SpringBoot如何整合Springsecurity實現(xiàn)數(shù)據(jù)庫登錄及權(quán)限控制

    SpringBoot如何整合Springsecurity實現(xiàn)數(shù)據(jù)庫登錄及權(quán)限控制

    這篇文章主要給大家介紹了關(guān)于SpringBoot如何整合Springsecurity實現(xiàn)數(shù)據(jù)庫登錄及權(quán)限控制的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-01-01
  • Java實現(xiàn)猜數(shù)程序

    Java實現(xiàn)猜數(shù)程序

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)猜數(shù)程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Java里的static import使用小結(jié)

    Java里的static import使用小結(jié)

    這篇文章主要介紹了Java里的static import使用小結(jié),本文給出了一些使用示例,并總結(jié)了一些使用特性,需要的朋友可以參考下
    2015-06-06

最新評論