使用xjar 对Spring-Boot jar包加密

       最近公司有个项目涉及到,部署到待签约合作的客户服务器上,因为考虑到demo的代码保护,所以对springboot打包生成的jar包进行加密。从网上找了很多资料,有些是利用 ProGuard进行代码混淆,但这个方法我尝试过很多次,也花了一点时间下去,没什么效果,可能我没找对方法吧。

       今天记录下利用xjar的方法进行jar加密

   1、maven添加两个包

<dependency>
    <groupId>com.github.core-lib</groupId>
    <artifactId>xjar</artifactId>
    <version>v2.0.6</version>
</dependency>

<dependency>
   <groupId>com.github.core-lib</groupId>
   <artifactId>loadkit</artifactId>
   <version>v1.0.0</version>
 </dependency>

<!--这个配置在</dependencies> 之外-->
    <!-- 设置 jitpack.io 仓库 -->
    <repositories>
        <repository>
            <id>jitpack.io</id>
            <url>https://jitpack.io</url>
        </repository>
    </repositories>

     但是如果使用idea的pom文件来下载上面两个依赖包,会一直不能成功下载,所以使用下面方法:

   1.1、打开maven的远程仓库下载: https://mvnrepository.com/artifact/com.github.core-lib/xjar/v2.0.6 

  这里接上图步骤,下面一定要定我图中圈起来的,否则会在后面导入包的时候找不到依赖(亲测)

 

    1.2、下载另外一个:https://mvnrepository.com/artifact/com.github.core-lib/loadkit/v1.0.0

    1.3 、上面两个包下载到本地之后,启动cmd,执行下面两段命令(默认我们都有配置maven的环境变量),注意下面命令中的文件路劲改成自己的下载的对应路劲

     

mvn install:install-file -Dfile=F:\GuGeDonwLoad\xjar-v2.0.6.jar  -DgroupId=com.github.core-lib -DartifactId=xjar -Dversion=v2.0.6 -Dpackaging=jar
mvn install:install-file -Dfile=F:\GuGeDonwLoad\loadkit-v1.0.0.jar   -DgroupId=com.github.core-lib -DartifactId=loadkit -Dversion=v1.0.0 -Dpackaging=jar

    贴出一段执行的效果,已经把对应的jar包通过mvn下载到默认的仓库路劲了,如果我们idea-maven仓库下载路劲在别的目录,可以打开刚编译过的目录下,拷贝至自定义的目录下。这时pom文件会自动刷新,也就不会爆红了。

        1.4、在工程下随便创建一个类,加入下面的main方法,运行结束后会生成对应的加密jar包,然而你会发现加密后的jar包会比没有加密的大一倍,哈哈,我也不知道为啥。


import io.xjar.XConstants;
import io.xjar.XKit;
import io.xjar.boot.XBoot;
import io.xjar.key.XKey;
/**
 * @Author zzl
 * @create 2020/5/22 0022 10:23
 */
public class Test {
    public static void main(String[] args) {
        try {
            // Spring-Boot Jar包加密
            String password = "8888";
            XKey xKey = XKit.key(password);
            //参数1是我们打包的文件目录和名称,参数2是加密后的文件路径和名称,参数3是密码
            XBoot.encrypt("E:\\GIT\\recess-manage-server\\target\\manage-server-1.0.0.jar",
                    "E:\\GIT\\recess-manage-server\\target\\manage-server-2-1.0.0-.jar", xKey);
            System.out.println("Successfully generated encrypted jar");
        }catch (Exception e){
            e.printStackTrace();
        }

    }
}

1.5、windows启动或者当前窗口启动方式:cmd 到加密的jar下,启动jia包(java -jar xxxxxxx.jar),会提示输入密码,成功则启动,

 可能在启动加密后的jar会提示:Exception in thread "main" java.lang.ClassNotFoundException:,在pom加入下面代码,对应mainClass写自己的。

你也可以使用 jd-gui.exe来测试是否能查看jar包的代码,如下:

       1.6、linux后台启动,首先利用ieda创建一个properties文件,写入密码。然后放置到linux的某个目录下,运行即可

nohup java -jar xxx-1.0.1.jar --xjar.keyfile=/usr/local/project/xjar.key.properties >logs/recess.log 2>&1 &

    以上就是我个人总结的xjar加密jar的方式,可能总结的不是很到位,排版也比较差,请多多包涵哈

参考:https://msd.misuland.com/pd/4146263639743012462

猜你喜欢

转载自blog.csdn.net/qq_33278354/article/details/106278539