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

java17、javafx項(xiàng)目混淆和加密方式

 更新時(shí)間:2025年09月24日 09:54:29   作者:筱詩詩  
文章介紹了Java17與JavaFX項(xiàng)目使用ProGuard進(jìn)行混淆及Xjar加密的流程,包括依賴配置、混淆規(guī)則定義、構(gòu)建執(zhí)行、結(jié)果驗(yàn)證與加密參數(shù)設(shè)置,強(qiáng)調(diào)版本兼容性及保留關(guān)鍵類方法的重要性

java17、javafx項(xiàng)目混淆和加密

采用proguard進(jìn)行混淆;xjar進(jìn)行加密

混淆流程

1.添加依賴和插件

<plugin>
    <groupId>com.github.wvengen</groupId>
    <artifactId>proguard-maven-plugin</artifactId>
    <version>2.6.0</version>
    <dependencies>
        <dependency>
            <groupId>com.guardsquare</groupId>
            <artifactId>proguard-base</artifactId>
            <version>7.4.2</version>
        </dependency>
        <dependency>
            <groupId>com.guardsquare</groupId>
            <artifactId>proguard-core</artifactId>
            <version>9.1.1</version>
        </dependency>
    </dependencies>
    <executions>
        <execution>
            <id>obfuscation-packaging</id>
            <phase>package</phase>
            <goals>
                <goal>proguard</goal>
            </goals>
            <configuration>
                <proguardVersion>7.4.2</proguardVersion>
                <obfuscate>true</obfuscate>
                <attach>true</attach>
                <appendClassifier>false</appendClassifier>
                <addMavenDescriptor>true</addMavenDescriptor>
                <injar>${project.build.finalName}.jar</injar>
                <outjar>${project.build.finalName}.jar</outjar>
                <injarNotExistsSkip>true</injarNotExistsSkip>
                <libs>
                    <lib>${java.home}/jmods</lib>
                </libs>
            </configuration>
        </execution>
    </executions>
</plugin>

注意:dependency依賴需要寫在plugin中,才會(huì)生效;jdk17需使用7.2.2以上的依賴版本,軟件使用的版本為7.4.2

  • <configuration>: 這個(gè)標(biāo)簽包含了 proguard 插件的配置選項(xiàng)。
  • <proguardVersion>: 指定 ProGuard 的版本。
  • <obfuscate>: 是否啟用混淆。
  • <attach>: 是否將生成的 artifacts(構(gòu)建產(chǎn)物)附加到項(xiàng)目的 artifact。
  • <appendClassifier>: 是否在生成的 artifact 上添加一個(gè)分類器。分類器是 Maven 用來區(qū)分同一個(gè) groupId 和 artifactId,但不同版本或變體的機(jī)制。
  • <addMavenDescriptor>: 是否添加 Maven 描述符到輸出的 jar。
  • <injar>: 指定輸入 jar 的名稱。
  • <outjar>: 指定輸出混淆后的 jar 的名稱。這里和輸入 jar 使用了相同的名稱,實(shí)際使用中可能希望使用不同的名稱以保留原始 jar 文件。
  • <injarNotExistsSkip>: 如果輸入的 jar 文件不存在,則是否跳過 ProGuard 處理。
  • <libs>: 指定 Java 類庫的位置。ProGuard 需要這些類庫來處理混淆中的類依賴問題。
  • <lib>: 實(shí)際類庫的路徑。這里指定了 Java 的 jmods 目錄,通常包含 Java 模塊化系統(tǒng)的模塊。

2.定義混淆規(guī)則

<option>-keepattributes *Annotation*</option>
<option>-keep class com.xxx.xxx.view.** { *; }</option>
<option>-keep class com.xxx.xxx.mapper.** { *; }</option>
<option>-keep class com.xxx.xxx.domain.** { *; }</option>
<option>-keep enum com.xxx.xxx.** { *; }</option>
<option>-keep
	class com.xxx.xxx.Main {public static void main(java.lang.String[]);}
</option>
               

<options>: ProGuard 的具體配置選項(xiàng),以 <option> 標(biāo)簽形式提供。

<option>

具體的使用的 ProGuard 配置指令。

  • -keepattributes \*Annotation\*: 保留所有注解。
  • -keep class com.xxx.xxx.view.\** { \*; } 和類似的行:指定保留特定包下的類和它們的成員。
  • -keep enum com.xxx.xxx.\** { \*; }: 保留枚舉。
  • -keep class com.xxx.xxx.Main {public static void main(java.lang.String[]);}: 保留包含 main 方法的入口類,這對(duì)于確保應(yīng)用程序點(diǎn)可執(zhí)行性至關(guān)重要。

3.執(zhí)行混淆

通過maven package進(jìn)行打包,ProGuard會(huì)在項(xiàng)目構(gòu)建的過程中進(jìn)行混淆操作。

4.檢查混淆結(jié)果

混淆后的 class 文件將被包含在 jar 文件中,可以用任何Java反編譯工具打開jar文件,查看混淆后的代碼。確認(rèn)沒有遺漏混淆的類文件或方法。

5.測(cè)試混淆后的軟件

混淆后進(jìn)行全面測(cè)試,來確保軟件各功能均正確運(yùn)行。

加密流程

1. 添加依賴

<project>
    <!-- 設(shè)置 jitpack.io 倉庫 -->
    <repositories>
        <repository>
            <id>jitpack.io</id>
            <url>https://jitpack.io</url>
        </repository>
    </repositories>
    <!-- 添加 XJar 依賴 -->
    <dependencies>
        <dependency>
            <groupId>com.github.core-lib</groupId>
            <artifactId>xjar</artifactId>
            <version>4.0.2</version>
            <!-- <scope>test</scope> -->
        </dependency>
    </dependencies>
</project>
  • 必須添加 https://jitpack.io Maven倉庫.
  • 如果使用 JUnit 測(cè)試類來運(yùn)行加密可以將 XJar 依賴的 scope 設(shè)置為 test.

2. 加密源碼

XCryptos.encryption()
        .from("/path/to/read/plaintext.jar")
        .use("io.xjar")
        .include("/io/xjar/**/*.class")
        .include("/mapper/**/*Mapper.xml")
        .exclude("/static/**/*")
        .exclude("/conf/*")
        .to("/path/to/save/encrypted.jar");
方法名稱參數(shù)列表是否必選方法說明
from(String jar)二選一指定待加密JAR包路徑
from(File jar)指定待加密JAR包文件
use(String password)二選一指定加密密碼
use(String algorithm, int keysize, int ivsize, String password)指定加密算法及加密密碼
include(String ant)可多次調(diào)用指定要加密的資源相對(duì)于classpath的ANT路徑表達(dá)式
include(Pattern regex)可多次調(diào)用指定要加密的資源相對(duì)于classpath的正則路徑表達(dá)式
exclude(String ant)可多次調(diào)用指定不加密的資源相對(duì)于classpath的ANT路徑表達(dá)式
exclude(Pattern regex)可多次調(diào)用指定不加密的資源相對(duì)于classpath的正則路徑表達(dá)式
to(String xJar)二選一指定加密后JAR包輸出路徑, 并執(zhí)行加密.
to(File xJar)指定加密后JAR包輸出文件, 并執(zhí)行加密.
  • 指定加密算法的時(shí)候密鑰長(zhǎng)度以及向量長(zhǎng)度必須在算法可支持范圍內(nèi), 具體加密算法的密鑰及向量長(zhǎng)度請(qǐng)自行百度或谷歌.
  • include 和 exclude 同時(shí)使用時(shí)即加密在include的范圍內(nèi)且排除了exclude的資源.

3. 編譯腳本

go build xjar.go
  • 通過步驟2加密成功后XJar會(huì)在輸出的JAR包同目錄下生成一個(gè)名為 xjar.go 的的Go啟動(dòng)器源碼文件.
  • 將 xjar.go 在不同的平臺(tái)進(jìn)行編譯即可得到不同平臺(tái)的啟動(dòng)器可執(zhí)行文件, 其中Windows下文件名為 xjar.exe 而Linux下為 xjar.

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實(shí)現(xiàn)分頁查詢功能

    Java實(shí)現(xiàn)分頁查詢功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)分頁查詢功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 帶你入門Java的集合

    帶你入門Java的集合

    Java的集合類型都是對(duì)java.util包中Collection接口的繼承,這里我們主要介紹依賴于collection的一些主分支,一起來看一下Java中的collection集合類型總結(jié)
    2021-07-07
  • SpringBoot與SpringMVC第一講

    SpringBoot與SpringMVC第一講

    SpringMVC全名應(yīng)該叫做SpringWebMVC,它其實(shí)是基于servlet來構(gòu)建的一個(gè)原始web框架從一開始就包含在了spring框架中,下面通過實(shí)例代碼給大家介紹SpringBoot與SpringMVC的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Elasticsearch 映射參數(shù)詳解 fields

    Elasticsearch 映射參數(shù)詳解 fields

    這篇文章主要介紹了fields Elasticsearch 映射參數(shù)fields,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java參數(shù)校驗(yàn)@Validated、@Valid介紹及使用詳解

    Java參數(shù)校驗(yàn)@Validated、@Valid介紹及使用詳解

    Javax.validation是?spring?集成自帶的一個(gè)參數(shù)校驗(yàn)接口,可通過添加注解來設(shè)置校驗(yàn)條件,這篇文章主要介紹了Java參數(shù)校驗(yàn)@Validated、@Valid介紹及使用詳解,需要的朋友可以參考下
    2024-08-08
  • Java Hibernate中使用HQL語句進(jìn)行數(shù)據(jù)庫查詢的要點(diǎn)解析

    Java Hibernate中使用HQL語句進(jìn)行數(shù)據(jù)庫查詢的要點(diǎn)解析

    HQL是Hibernate框架中提供的關(guān)系型數(shù)據(jù)庫操作腳本,當(dāng)然我們也可以使用原生的SQL語句,這里我們來看一下在Java Hibernate中使用HQL語句進(jìn)行數(shù)據(jù)庫查詢的要點(diǎn)解析:
    2016-06-06
  • 無感NullPointerException的值相等判斷方法

    無感NullPointerException的值相等判斷方法

    當(dāng)我們需要去判斷一個(gè)?入?yún)?查庫?返回的開關(guān)變量(通常是個(gè)Integer類型的)時(shí),常常會(huì)寫如下的if-else判斷語句。但又會(huì)為在生產(chǎn)環(huán)境看到的「NullPointerException」感到困擾,遇到這個(gè)問題如何處理呢,下面小編通過本文給大家詳細(xì)講解,需要的朋友參考下吧
    2023-02-02
  • SpringMVC?RESTFul實(shí)戰(zhàn)案例修改功能實(shí)現(xiàn)

    SpringMVC?RESTFul實(shí)戰(zhàn)案例修改功能實(shí)現(xiàn)

    這篇文章主要為大家介紹了SpringMVC?RESTFul實(shí)戰(zhàn)案例修改功能實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Java項(xiàng)目防止SQL注入的幾種方式

    Java項(xiàng)目防止SQL注入的幾種方式

    SQL注入是一種常見的攻擊方式,黑客試圖通過操縱應(yīng)用程序的輸入來執(zhí)行惡意SQL查詢,從而繞過認(rèn)證和授權(quán),竊取、篡改或破壞數(shù)據(jù)庫中的數(shù)據(jù),本文主要介紹了Java項(xiàng)目防止SQL注入的幾種方式,感興趣的可以了解一下
    2023-12-12
  • request如何獲取body的json數(shù)據(jù)

    request如何獲取body的json數(shù)據(jù)

    這篇文章主要介紹了request如何獲取body的json數(shù)據(jù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評(píng)論

定结县| 汉源县| 泽库县| 萍乡市| 廉江市| 清丰县| 平谷区| 贞丰县| 天峨县| 宁阳县| 河东区| 井研县| 泗水县| 昌江| 平昌县| 宁远县| 大城县| 贞丰县| 锡林郭勒盟| 五台县| 青州市| 德令哈市| 灌阳县| 鹤庆县| 台东市| 赣州市| 枣阳市| 易门县| 林口县| 南昌市| 友谊县| 泌阳县| 鲁山县| 丹江口市| 长葛市| 华容县| 钟祥市| 鱼台县| 红原县| 宜州市| 周宁县|