专栏首页HUC思梦的java专栏实用的jar包加密方案

实用的jar包加密方案

前言

jar包相信大家都很熟悉,是通过打包java工程而获得的产物,但是jar包是有一个致命的缺点的,那就是很容易被反编译,只需要使用jd-gui就可以很容易的获取到java源码。

如果你想要防止别人反编译做逆向工程,那么对jar包进行一次加密就是一项很重要的工作了。

如何对jar包进行加密呢?其实没有想象中的那么困难,有一款开源工具已经提供了较为完善的加密方案,这款开源工具的名字叫做xjar。

接下来我们就看一下使用xjar工具给jar包加密有多么的容易。

基础环境准备

现在假设你的项目是一个maven项目(目前不使用maven的项目已经不多了),那么加密起来特别的容易,

首先就是要在你的pom文件中增加插件仓库地址,如下:

    <pluginRepositories>
        <pluginRepository>
            <id>jitpack.io</id>
            <url>https://jitpack.io</url>
        </pluginRepository>
    </pluginRepositories>

然后在pom文件中增加如下插件:

    <plugin>
                <groupId>com.github.core-lib</groupId>
                <artifactId>xjar-maven-plugin</artifactId>
                <version>4.0.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>build</goal>
                        </goals>
                        <phase>install</phase>

                        <configuration>
                            <includes>
                                <include>/com/huc/**/*.class</include>
                                <include>/mapper/**/*Mapper.xml</include>
                                <include>/*.yml</include>
                            </includes>
                            <excludes>
                                <exclude>/templates/**.*</exclude>
                                <exclude>/static/**.*</exclude>
                            </excludes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

这样,我们的准备工作就做完了,需要注意的是,includes代表我们想要加密的内容,采用的是Ant表达式,excludes代表的是不需要加密的内容,同样使用的Ant表达式。

一般情况下我们建议这两处内容必填,如果不填写,会加密整个jar包中的所有文件,这样其实是没有必要的,而且全部加密后启动的时候也可能产生意料之外的错误。

另外要说明的是,加密后的jar包是需要通过golang环境运行的,所以我们需要提前把golang的运行环境安装好,安装过程请自行百度。

开始加密

现在我们就开始正式的加密工作了,加密过程非常简单,只需要使用maven的install命令即可自动打包,命令如下:

mvn clean install -Dxjar.password=password  -Dmaven.test.skip=true

这里的password可以自行指定密码,是必填项。

执行后就会得到两个文件:一个是xjar.go的go源文件,一个是你项目的xjar包,也就是加密后的jar包。

运行加密后的jar包

运行加密后的jar包是需要先编译xjar.go源文件生成jar包启动器的。编译方式如下:

go build ./xjar.go

编译后会生成xjar.exe启动器(王子使用的是window系统,如果是linux系统就不是exe后缀了)。

之后使用如下命令即可运行加密后的jar包:

./xjar.exe java -jar ./**.xjar

可以看出,只是在使用java -jar的前边加上启动器即可,还是很方便的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一种无法被Dump的jar包加密保护解决方案

    由于Java的指令集比较简单而通用,较容易得出程序的语义信息,Java编译后的Jar包和Class文件,可以轻而易举的使用反编译工具(如JD-GUI)进行反编译...

    我是小三
  • Python 如何正确调用 jar 包加密,得到加密值?

    在做接口自动化的时候,经常会遇到一些参数是需要加密的,比如密码参数。 加密规则一般开发也不愿意告诉你,会直接给你一个jar包,让你调用jar包得到加密值,在jm...

    上海-悠悠
  • 【jar】JDK将单个的java文件打包为jar包,并引用到项目中使用【MD5加密】

    ================================================================================...

    墨文
  • Intellij IDEA 添加jar包的三种方式

    一.直接复制:(不推荐) 方法:直接将硬盘上的jar包复制粘贴到项目的lib目录下即可。 ? 注意: 1.对于导入的eclipse项目,该方式添加的jar...

    hbbliyong
  • Linux中jar包启动和jar包后台运行的实现方式

    特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出

    砸漏
  • 用户名与密码前后加密、后台解密实现方案

    随着https的推广,越来越多的网站转到https协议了。但是还是有不少网站没有切换到https,还是使用http。使用http协议的网站,如果没有...

    java乐园
  • 敏感数据加密方案及实现

    本文首发于政采云前端团队博客:敏感数据加密方案及实现 https://www.zoo.team/article/data-encryption

    政采云前端团队
  • jar包冲突常用的解决方法

    转载自https://www.cnblogs.com/xiayangy/p/4038347.html

    allsmallpig
  • 性能测试(3):JMeter对jar包调用以及加密参数传递

    JMeter在请求时,肯定会需要参数传递,参数值如果不变动或者不需要加解密这些操作,则操作上都是比较简单。 如果参数值不固定,而且需要加解密正确的时候该如何操...

    Mokwing
  • Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法

    原文转载自:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html

    用户1171305
  • spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途

    在基础IOC功能上提供扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、JNDI定位,EJB集成、远程访问、缓存以及多种视图层框架的支持。

    noteless
  • 前端敏感数据加密方案及实现

    现在是大数据时代,需要收集大量的个人信息用于统计。一方面它给我们带来了便利,另一方面一些个人信息数据在无意间被泄露,被非法分子用于推销和黑色产业。

    前端劝退师
  • AES加密——Java与iOS的解决方案

    该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael为名投稿高级加密标准的甄选流程。(Rij...

    Originalee
  • 超实用的在线教育私有化视频加密解决方案

    今天给大家推荐的是一款私有化的视频加密解决方案,可以提供高强度视频加密保护,且能够实现多种计费模式.确保只有经过授权的付费用户才能完整运行程序,可控制试播时长....

    点量小崔
  • 用户注册登录系统加密方案分析与实践

    对于一个网站而言,用户注册登录系统的重要性不言而喻,而该系统的安全性则可谓是重中之重。设计良好的注册登录系统可以保证即使在用户客户端被监听、数据网络传输被拦截、...

    saintyyu
  • 使用groovy脚本使gradle灵活加载本地jar包的两种方式

    本人在使用Jenkins做测试项目的可持续集成过程中,构建工具用的gradle,但由于一些jar包是并私有仓库给用,暂时没有搭建计划。这就导致了我构建项目的时候...

    FunTester
  • GCAC48 用TDF构建SS的公钥加密方案(作业8答案)

    GCAC43 11.4 Encryption based on a trapdoor function scheme

    安包
  • 代码中的敏感信息加密方案

    1. 代码中的敏感信息加密,例如邮箱账号密码、连接数据库的账号密码、第三方校验的key

    37丫37
  • Android Studio 在项目中引用第三方jar包的方法

    以上所述是小编给大家介绍的Android Studio 在项目中引用第三方jar包的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的...

    砸漏

扫码关注云+社区

领取腾讯云代金券