一、概述
Java的 Jar包中的.class文件可以通过反汇编得到源码。这样应用的安全性就很难得到保证,别人只要得到你的应用,不需花费什么力气,就可以得到源码。
这时候就需要对jar进行加密处理。
XJar是一款Spring Boot JAR 安全加密运行工具, 同时支持的原生JAR.
它是基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动, 动态解密运行的方案, 避免源码泄露以及反编译.
二、XJar快速上手
2.1、jar包加密
2.1.1、引入依赖
<project>
<!-- 设置 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>
复制
2.1.2、编写加密类
public class JarEncryptio {
public static void main(String[] args) throws Exception {
// Spring-Boot Jar包加密
XCryptos.encryption()
.from("/path/target/test.jar")
.use("passwad")
.exclude("/static/**/*")
.exclude("/templates/**/*")
.exclude("/META-INF/resources/**/*")
.to("/savePath/test-encryption.jar");
System.out.println("success");
}
}
复制
以上,运行程序即可获得加密后的jar包。并包含一个xjar.go文件。
2.2、编译xjar.go文件
加密后的jar包不能直接运行了,需要golang对xjar.go文件编译后,方可运行。
- 编译xjar.go文件需要golang的运行环境
- 将 xjar.go 在不同的平台进行编译即可得到不同平台的启动器可执行文件, 其中Windows下文件名为 xjar.exe 而Linux下为 xjar
- 用于编译的机器需要安装 Go 环境, 用于运行的机器则可不必安装 Go 环境
2.2.1、安装Golang环境
2.2.1.1、Mac环境
存放目录:/root/golang
# 下载安装包
wget -c https://golang.google.cn/dl/go1.16.2.darwin-amd64.tar.gz
# 解压
tar -xzvf go1.16.2.darwin-amd64.tar.gz
# 进入目录
cd go
# 编辑~/.bash_profile文件
vim ~/.bash_profile
# 追加如下内容
export GOROOT=/root/golang/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=$HOME/go
# 编辑~/.zshrc文件
vim ~/.zshrc
# 追加如下内容
source ~/.bash_profile
# 使终端对以上配置的环境变量生效
source ~/.zshrc
# 检查是否安装成功
go version
复制
2.2.1.1、Linux环境
存放目录:/root/golang
# 下载安装包
wget -c https://golang.google.cn/dl/go1.14.6.linux-amd64.tar.gz
# 解压
tar -zxvf go1.14.6.linux-amd64.tar.gz
# 进入目录
cd go
# 配置环境变量
vim /etc/profile
# 追加如下配置
export GOROOT=/root/golang/go
export GOPATH=/home/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
# 刷新环境变量
source /etc/profile
# 查看版本(如果不行,检查"追加如下配置"的配置路径是否有误)
go version
复制
2.2.2、安装java环境
这里用于测试,快速粗暴安装
# 查看可安装java版本
yum -y list java*
# 安装
yum install -y java-1.8.0-openjdk-devel.x86_64
# 查看版本
java -version
复制
2.2.3、编译
go build xjar.go
复制
将 xjar.go 在不同的平台进行编译即可得到不同平台的启动器可执行文件, 其中Windows下文件名为 xjar.exe 而Linux下为 xjar
2.3、运行
运行环境只需要有java环境即可
但是务必要保证编译环境与运行环境属于同一种环境(x86机器上编译的不能在arm环境运行)
# linux/mac环境下运行
./xjar java -jar test-encryption.jar
复制
最后修改时间:2022-03-31 10:03:23
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
您好,您的文章已入选墨力原创作者计划合格奖,10墨值奖励已经到账请查收!
❤️我们还会实时派发您的流量收益。
3年前

评论
相关阅读
Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合
阿里巴巴中间件
61次阅读
2025-04-08 11:01:30
java项目选择云服务器怎么选?
云知识CLOUD
33次阅读
2025-04-09 20:02:37
瞧瞧别人家的判空,那叫一个优雅!
jinchanchanwaji
22次阅读
2025-04-03 14:56:21
Java数据库连接池学习
淡定
20次阅读
2025-04-14 22:46:26
Java反射大揭秘:程序员的“偷窥”与“开挂”指南
让天下没有难学的编程
19次阅读
2025-03-28 15:02:40
【JVM祖传手艺大揭秘】双亲委派:Java世界的"啃老"生存法则
让天下没有难学的编程
11次阅读
2025-04-09 11:01:12
面试官:Java反射和new效率对比,差距有多大?
捡田螺的小男孩
9次阅读
2025-04-13 10:34:43
Java萌新修炼手册①:开局一把JDK,环境搭建全靠浪!
让天下没有难学的编程
6次阅读
2025-04-21 10:34:37
Java萌新修炼手册②:Hello Worldの108种写法——从入门到入坟!
让天下没有难学的编程
6次阅读
2025-04-21 10:34:36
Java程序使用预处理语句的性能提升
GreatSQL社区
5次阅读
2025-04-23 11:18:50
TA的专栏
Java中间件
收录0篇内容
热门文章
一次Connection reset by peer的问题排查
2021-12-07 33939浏览
Java8-Stream: no instance(s) of type variable(s) R exist so that void conforms to R
2021-02-19 32354浏览
nginx: [emerg] "user" directive is not allowed here in /etc/nginx/conf.d/nginx.conf:1
2022-02-15 24268浏览
ORA-00904: "POLTYP": invalid identifier
2019-06-19 12929浏览
PageHelper排坑,处理排序失败: net.sf.jsqlparser.JSQLParserException
2022-05-19 12771浏览
目录