XJar 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
XJar 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票

软件简介

XJar — Spring-Boot JAR 包加密运行工具,避免源码泄露以及反编译。

Spring Boot JAR安全加密运行工具,同时支持原生的JAR。

基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动,动态解密运行的方案,避免源码泄露或反编译。

功能特性

  • 无需侵入代码,只需要把编译好的JAR包通过工具加密即可。

  • 完全内存解密,杜绝源码以及字节码泄露以及反编译。

  • 支持所有JDK内置加解密算法。

  • 可选择需要加解密的字节码或其他资源文件,避免计算资源浪费。

环境依赖

JDK 1.7 +

使用步骤

<project>
    <!-- 设置 jitpack.io 仓库 -->
    <repositories>
        <repository>
            <id>jitpack.io</id>
            <url>https://www.jitpack.io</url>
        </repository>
    </repositories>
    <!-- 添加 XJar 依赖 -->
    <dependencies>
        <dependency>
            <groupId>com.github.core-lib</groupId>
            <artifactId>xjar</artifactId>
            <version>LATEST_VERSION</version>
        </dependency>
    </dependencies>
</project>
// Spring-Boot Jar包加密
public static void main(String[] args) {
    String password = "io.xjar";
    File plaintext = new File("/path/to/read/plaintext.jar");
    File encrypted = new File("/path/to/save/encrypted.jar");
    XBoot.encrypt(plaintext, encrypted, password);
}
// Spring-Boot Jar包解密
public static void main(String[] args) {
    String password = "io.xjar";
    File encrypted = new File("/path/to/read/encrypted.jar");
    File decrypted = new File("/path/to/save/decrypted.jar");
    XBoot.decrypt(encrypted, decrypted, password);
}
// Jar包加密
public static void main(String[] args) {
    String password = "io.xjar";
    File plaintext = new File("/path/to/read/plaintext.jar");
    File encrypted = new File("/path/to/save/encrypted.jar");
    XJar.encrypt(plaintext, encrypted, password);
}
// Jar包解密
public static void main(String[] args) {
    String password = "io.xjar";
    File encrypted = new File("/path/to/read/encrypted.jar");
    File decrypted = new File("/path/to/save/decrypted.jar");
    XJar.decrypt(encrypted, decrypted, password);
}
// 命令行运行JAR
java -jar /path/to/encrypted.jar
// 在提示输入密码的时候输入密码后按回车即可正常启动,也可以通过传参的方式直接启动
java -jar /path/to/encrypted.jar --xjar.password=PASSWORD

参数说明

  • --xjar.algorithm 加解密算法名称,缺省为AES,支持JDK所有内置算法,如AES / DES ...

  • --xjar.keysize 密钥长度,缺省为128,根据不同的算法选取不同的密钥长度。

  • --xjar.ivsize 向量长度,缺省为128,根据不同的算法选取不同的向量长度。

  • --xjar.password 密码

进阶用法

// 只加密自身项目及相关模块的源码不加密第三方依赖,可以通过XJarArchiveEntryFilter来定制需要加密的JAR包内资源
public static void main(String[] args) {
    String password = "io.xjar";
    File plaintext = new File("/path/to/read/plaintext.jar");
    File encrypted = new File("/path/to/save/encrypted.jar");
    XBoot.encrypt(plaintext, encrypted, password, new XJarArchiveEntryFilter() {
        @Override
        public boolean filter(JarArchiveEntry entry) {
            return entry.getName().startsWith("/BOOT-INF/classes/")
             || entry.getName().startsWith("/BOOT-INF/lib/jar-need-encrypted");
        }
    });
}

变更记录

  • v1.0.5

    1. 支持并行类加载,需要JDK1.7+的支持,可提升多线程环境类加载的效率

    2. Spring-Boot JAR 包加解密增加一个安全过滤器,避免无关资源被加密造成无法运行

    3. XBoot / XJar 工具类中增加多个按文件路径加解密的方法,提升使用便捷性

  • v1.0.4 小优化

  • v1.0.3 增加Spring-Boot的FatJar加解密时的缺省过滤器,避免由于没有提供过滤器时加密后的JAR包不能正常运行。

  • v1.0.2 修复中文及空格路径的问题

  • v1.0.1 升级detector框架

  • v1.0.0 第一个正式版发布

协议声明

Apache-2.0

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
06/21 09:04

Java Jar 包加密 -- XJar

Java Jar 包加密 一、缘由   Java的 Jar包中的.class文件可以通过反汇编得到源码。这样一款应用的安全性就很难得到保证,别人只要得到你的应用,不需花费什么力气,就可以得到源码。   这时候就需要对jar进行加密处理。 二、技术&工具   XJar   GitHub:https://github.com/core-lib/xjar   码云:https://git...

0
0
发表了博客
2019/05/30 11:49

XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译

XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd...

0
0
发表于AI & 大数据专区
05/27 18:33

Springboot项目使用xjar加密jar包

在pom文件中加入 plugins下 <!--jar文件加密,防止反编译--> <plugin> <groupId>com.github.core-lib</groupId> <artifactId>xjar-maven-plugin<...

0
0
2018/11/29 11:22

XJar: Spring-Boot JAR 包加密运行工具,避免源码泄露以及反编译。

XJar GitHub: https://github.com/core-lib/xjar Spring Boot JAR 安全加密运行工具, 同时支持的原生JAR. 基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动, 动态解密运行的方案, 避免源码泄...

7
0
发表了博客
2019/02/01 02:26

maven知识

首先下载maven 然后win的配置环境变量 maven目录结构 --main --java --package --test --java --package resources maven 需要有Java环境 ,是Java开发的 然后Java里面要写 各种包 类 pom 项目对象模型 groupId 一般用包名来表示 表示项目是由哪个开发组织开发的 类似于籍贯 artifactId 一般是项目的名称 类似于姓名 ve...

0
0
发表了博客
2018/03/24 01:14

maven学习(3)-Maven 核心技术

第一节:Maven 仓库概念 Maven 远程仓库配置文件: $M2_HOME/lib/maven-model-builder-3.3.3.jar 文件:org\apache\maven\model\pom-4.0.0.xml <repositories> <repository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
44 收藏
分享
返回顶部
顶部