使用 XJar 对jar包进行加密。GitHub: https://github.com/core-lib/xjar
Spring Boot JAR 安全加密运行工具, 同时支持的原生JAR
基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动, 动态解密运行的方案, 避免源码泄露以及反编译
功能特性
需要先设置jitpack.io的仓库地址,不然可能下载不了依赖包
在 pom.xml 合适位置加入以下代码
<repositories>
<repository>
<id>jitpack.ioid>
<url>https://jitpack.iourl>
repository>
repositories>
<dependencies>
<dependency>
<groupId>com.github.core-libgroupId>
<artifactId>xjarartifactId>
<version>4.0.2version>
dependency>
dependencies>
import io.xjar.XCryptos;
/**
* @author ber
* @version 1.0
* @date 22/3/11 20:39
*/
public class Encrypt {
public static void main(String[] args) throws Exception {
XCryptos.encryption()
.from("/path/to/read/plaintext.jar")
.use("password")
.include("/io/xjar/**/*.class")
.include("/mapper/**/*Mapper.xml")
.exclude("/static/**/*")
.exclude("/conf/*")
.to("/path/to/save/encrypted.jar");
}
}
其中/path/to/read/
待加密jar包路径, password
加密密码, /path/to/save/
加密后jar包输出路径。
include()方法将需要加密的class文件通过正则匹配的方式加入。
加密后会产生encrypted.jar
、xjar.go
、xjar_agentable.go
三个文件。
其中encrypted.jar
是加密后的jar包。xjar.go
是Go启动器源码文件,后面编译时需要用到。
具体方法详细介绍
方法名称 | 参数列表 | 是否必选 | 方法说明 |
---|---|---|---|
from | (String jar) | 二选一 | 指定待加密JAR包路径 |
from | (File jar) | 指定待加密JAR包文件 | |
use | (String password) | 二选一 | 指定加密密码 |
use | (String algorithm, int keysize, int ivsize, String password) | 指定加密算法及加密密码 | |
include | (String ant) | 可多次调用 | 指定要加密的资源相对于classpath的ANT路径表达式 |
include | (Pattern regex) | 可多次调用 | 指定要加密的资源相对于classpath的正则路径表达式 |
exclude | (String ant) | 可多次调用 | 指定不加密的资源相对于classpath的ANT路径表达式 |
exclude | (Pattern regex) | 可多次调用 | 指定不加密的资源相对于classpath的正则路径表达式 |
to | (String xJar) | 二选一 | 指定加密后JAR包输出路径, 并执行加密. |
to | (File xJar) | 指定加密后JAR包输出文件, 并执行加密. |
指定加密算法的时候密钥长度以及向量长度必须在算法可支持范围内, 具体加密算法的密钥及向量长度请自行百度或谷歌
include 和 exclude 同时使用时即加密在include的范围内且排除了exclude的资源
编译环境下需要安装GoLang环境,而在运行环境下不需要安装。
在不同平台下编译会得到不同平台的启动器。Windows下编译的启动器不能在linux下使用
go build xjar.go
xjar.go
前面有说过,是Go启动器源码文件./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]
待补充插件方式生成加密jar包, Github:xjar-maven-plugin
代码混淆等后续补充,待续。。。