XJar:Spring Boot JAR 安全加密运行工具,支持原生 JAR

栏目: Java · 发布时间: 5年前

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

XJar

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

联系作者

QQ 646742615 不会钓鱼的兔子


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编程珠玑(英文版・第2版)

编程珠玑(英文版・第2版)

[美] Jon Bentley / 人民邮电出版社 / 2010-8 / 39.00元

多年以来,当程序员们推选出最心爱的计算机图书时,《编程珠玑》总是位列前列。正如自然界里珍珠出自细沙对牡蛎的磨砺,计算机科学大师Jon Bentley以其独有的洞察力和创造力,从磨砺程序员的实际问题中凝结出一篇篇不朽的编程“珠玑”。这些文章是《ACM通讯》最受欢迎的专栏文章,最终结集为两部书出版。本书为第一卷,主要讨论计算机科学中最本质的问题:如何正确选择和高效地实现算法。 在书中,作者选取许......一起来看看 《编程珠玑(英文版・第2版)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具