SpringBoot中使用XJar进行JAR安全加密运行同时支持原生JAR
一、简介
Spring Boot JAR 安全加密运行工具, 同时支持的原生JAR. 基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动, 动态解密运行的方案, 避免源码泄露以及反编译.
功能特性 无代码侵入, 只需要把编译好的JAR包通过工具加密即可. 完全内存解密, 降低源码以及字节码泄露或反编译的风险. 支持所有JDK内置加解密算法. 可选择需要加解密的字节码或其他资源文件. 支持Maven插件, 加密更加便捷. 动态生成Go启动器, 保护密码不泄露.
官网: GitHub: https://github.com/core-lib/xjar Gitee: https://gitee.com/mirrors/XJar
二、使用
1.添加依赖
<project>
<!-- 设置 jitpack.io 仓库 -->
<repositories>
<repository>
<id>jitpack.io</id>
<url>https:
</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 测试类来运行加密可以将 XJar 依赖的 scope 设置为 test.
2.加密源码
package cn.gzsendi.modules.liutests;
import org.junit.Test;
import io.xjar.XCryptos;
public class XjarTest {
@Test
public void test() throws Exception{
XCryptos.encryption()
.from("D:/temp/springbootLiuTest.jar")
.use("123456")
.exclude("/*.yml")
.exclude("/*.xml")
.to("D:/temp/springbootLiuTestEncode.jar");
}
}
注:include 和 exclude 同时使用时即加密在include的范围内且排除了exclude的资源.
3.Go环境准备
Go环境安装文件下载地址:https://go.dev/dl/
#下载Go安装文件与解压
wget https:
tar zxvf go1.12.4.linux-amd64.tar.gz -C /usr/local
#编辑/etc/profile文件添加如下:
#go setting
export GOROOT=/usr/local/go
export GOPATH=/usr/local/gopath
export PATH=$PATH:$GOROOT/bin
source /etc/profile 生效
#验证go环境准备:
go version
4.编译脚本
go build xjar.go
通过步骤2加密成功后XJar会在输出的JAR包同目录下生成一个名为 xjar.go 的的Go启动器源码文件. 将 xjar.go 在不同的平台进行编译即可得到不同平台的启动器可执行文件, 其中Windows下文件名为 xjar.exe 而Linux下为 xjar. 由于启动器自带JAR包防篡改校验, 故启动器无法通用, 即便密码相同也不行.
5.启动运行
/path/to/xjar /path/to/java [OPTIONS] -jar /path/to/encrypted.jar [ARGS]
/path/to/xjar /path/to/javaw [OPTIONS] -jar /path/to/encrypted.jar [ARGS]
nohup /path/to/xjar /path/to/java [OPTIONS] -jar /path/to/encrypted.jar [ARGS]
#示例:
./xjar java -jar springbootLiuTestEncode.jar
仅支持通过 -jar 方式启动, 不支持-cp或-classpath的方式. -jar 后面必须紧跟着启动的加密jar文件路径
其他问题及内容参考:https://gitee.com/mirrors/XJar
以上介绍即为XJar的使用,希望对你有帮助.
|