一、集成
1. 官方介绍地址

手动加密:https://github.com/core-lib/xjar
maven插件集成:https://github.com/core-lib/xjar-maven-plugin

2. 添加仓库和插件

第一种(不推荐使用)

<project><!-- 设置 jitpack.io 插件仓库 --><pluginRepositories><pluginRepository><id>jitpack.io</id><url>https://jitpack.io</url></pluginRepository></pluginRepositories><!-- 添加 XJar Maven 插件 --><build><plugins><plugin><groupId>com.github.core-lib</groupId><artifactId>xjar-maven-plugin</artifactId><version>4.0.2</version><executions><execution><goals><goal>build</goal></goals><!--可以改成 install--><phase>package</phase><configuration><password>xxxx</password><!-- 需要加密的资源路径表达式 --><includes>         <include>com/zsplat/**</include><include>mapper/*Mapper.xml</include><include>config/**</include></includes><!-- 无需加密的资源路径表达式 --><excludes><exclude>static/**</exclude><exclude>META-INF/**</exclude></excludes><!-- 目标jar存放目录 --><targetDir>${project.build.directory}\xJarDir\</targetDir><!-- 目标jar名称,也可以用表达式(参考官网) --><targetJar>zsplat.jar</targetJar></configuration></execution></executions></plugin></plugins></build>
</project>

第二种(推荐使用):就是把密码配置删除,采用编译打包添加密码会安全些
https://jitpack.io Maven仓库

    <!-- 设置 jitpack.io 插件仓库 --><pluginRepositories><pluginRepository><id>jitpack.io</id><url>https://jitpack.io</url></pluginRepository></pluginRepositories><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!--开源官网:https://github.com/core-lib/xjar-maven-plugin--><plugin><groupId>com.github.core-lib</groupId><artifactId>xjar-maven-plugin</artifactId><version>4.0.2</version><executions><execution><goals><goal>build</goal></goals><phase>package</phase><!-- 或使用<phase>install</phase>--><configuration><excludes><exclude>static/**</exclude><exclude>templates/**</exclude><exclude>resources/**</exclude><exclude>META-INF/resources/**</exclude></excludes><!-- 目标jar存放目录 --><targetDir>${project.build.directory}\xJarDir\</targetDir><!-- 目标jar名称,也可以用表达式(参考官网) --><targetJar>unified-access-center-passwd.jar</targetJar></configuration></execution></executions></plugin></plugins></build>
3. 编译打包

上面xJar插件绑定到指定的 package ,因此每次执行 mvn clean package -Dxjar.password=io.xjar即可自动构建出加密的包,

mvn clean install -Dxjar.password=io.xjar

如下图:

根目录中 unified-access-center-0.0.1-SNAPSHOT.jar 是未加密的,而 xJarDir 文件夹下的 unified-access-center-passwd.jar 就是加密后的。

注释:
jar包名称可以一样,前提是不在同一个目录中即可,这里jar名称不一样只是为了让大家看得清楚些而已

二、安装go环境和编译

在对应的 xJarDir 文件夹目录编译脚本(go build xjar.go)。在不同的平台进行编译即可得到不同平台的启动器可执行文件,其中Windows下文件名为 xjar.exe 而Linux下为 xjar

2.1. 安装go

用于编译的机器需要安装 Go 环境,用于运行的机器则可不必安装 Go 环境
https://blog.csdn.net/weixin_40816738/article/details/120386291

2.2. 编译

演示编译环境linux,由于windows有一些bug
上传linux

go build xjar.go

三、运行
3.1. 正常运行
./xjar java -Dfile.encoding=utf-8 -jar  unified-access-center-passwd.jar

3.2. 二次加密运行

声明:如果小伙伴们不需要二次加密,请跳过3.2. 步骤

我的运行方式是这样的,因为我单独对yml文件中的敏感信息进行了二次加密,因此需要添加-Djasypt.encryptor.password=gblfy.com这一段,特别注意点,建议按照我的命令的前后顺序

./xjar java -Dfile.encoding=utf-8 -Djasypt.encryptor.password=gblfy.com -jar  unified-access-center-passwd.jar

如果小伙伴们,也想和我一样对敏感信息二次加密,请移步:
Spring Boot2 集成 jasypt 3.0.4 配置文件敏感信息加密

3.3. 测试结果

目的:这里是先运行保证正常功能无影响,下面会对jar进行反编译测试

四、IntelliJ IDE 反编译测试
4.1. 将加密的jar进行解压

4.2. 打开解压后的文件夹

4.3. class文件查看

4.4. 配置文件反编译

4.5. xml文件反编译

五、jd-gui 反编译测试
5.1. 没加密的jar效果
  • 没加密的jar效果
5.2. 加密jar的效果
  • 加密jar的效果
    说明一下:这里不是我没把文件打开,这是我选中文件双击打开后的效果,小伙伴们可以试试
六、XJad反编译测试
6.1. 没加密的jar效果

6.2. 加密的jar效果

七、XJad反编译测试
7.1. 没加密的jar效果

7.2. 加密的jar效果

八、反编译工具集合分享

java 反编译工具

SpringBoot2 集成xJar插件 动态解密jar包,避免源码泄露或反编译相关推荐

  1. xjar加密后运行错误_XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译。...

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

  2. Eclipse中怎样修改jar包的源码并将原jar包替换

    场景 在某Java Application中,所引用的lib下的某jar包,知道其源码,怎样修改其源码,然后将项目中的jar包替换为修改后的jar包. 注: 博客主页: https://blog.cs ...

  3. SpringBoot Jar包构建源码分析

    我们知道,SpringBoot仅凭一个Jar包就能将我们构建的整个工程跑起来,如果你也想知道这个能跑起来的jar内部结构是如何构建出来的,请耐心读完本篇,本篇内容可能有点多,但包你有收获.如果读完没有 ...

  4. MobileIMSDK怎样修改服务端核心jar包的源码并替换掉Java服务端的jar包

    场景 MobileIMSDK怎样将Java服务端运行起来以及打成jar包运行: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/11 ...

  5. 各个版本spring的jar包以及源码下载地址

    各个版本spring的jar包以及源码下载地址,目前最高版本到spring4.1.2,留存备用: http://maven.springframework.org/release/org/spring ...

  6. java导入jar包源码_eclipse中导入jar包的源码

    在日常开发工作中,我们时常会需要查看下第三方jar包的源码来更加正确的理解该jar包或者框架提供的功能.下面是笔者知道的两种添加jar包源码的方式: 方式一:configure build path中 ...

  7. idea中jar包关联源码

    1.问题描述 idea中jar包关联源码,方便查看了解源码,记录下. 2.问题说明 springboot源码包,直接zip下载就好了. 下载地址: https://github.com/spring- ...

  8. gradle 修改java代码_自定义一个gradle插件动态修改jar包Class文件

    动态修改jar包中的class文件,预埋占位符字符串,在编译代码时动态植入要修改的值.记录一下整个过程及踩过的坑. 创建一个Android项目,再创建一个Android library,删掉里面所有代 ...

  9. gradle使用插件将jar包以及源码打入nexus的maven私服

    之前写过一篇文章https://blog.csdn.net/u011943534/article/details/89173294,使用gradle的maven-publish插件将源码打成jar并推 ...

最新文章

  1. linux虚拟磁盘管理pe大小6,Linux下磁盘的高级管理——LVM逻辑卷管理
  2. java位运算符取反_java运算符
  3. discuz MVC结构分析
  4. spring 定时任务---task
  5. java数组原理_Java数组排序原理
  6. c语言位运算知乎,07-C语言运算符-指趣学院
  7. 深度学习图像分类(十四): EifficientNet系列(V1, V2)
  8. FreeTextBox编辑器的问题
  9. 中国大陆省市区县三级、四级菜单数据整理
  10. 53.创建线程_beginthread
  11. linux网络串口工具下载,串口调试工具手机版下载
  12. python生成三维点云包围盒
  13. DCDC布局布线总结
  14. 【创业之星】软件使用指南
  15. 【企业管理】管理学十大原理
  16. ios13.5.1降级_四条重磅消息,iOS 13.5.1 也能降级 iOS 13.4.1
  17. 22.12.1打卡 漫步校园 记忆化搜索
  18. 熬夜爆肝整理!史上最硬核的Mysql函数大全,还不收藏?
  19. linux宝塔杰奇安装,杰奇2.4安装教程+远程采集
  20. proxysql mysql_利用ProxySQL实现MySQL的读写分离

热门文章

  1. 诺奖得主们年轻时都有哪些特征?擅长合作、论文高产是关键
  2. 当数学遇上古诗词,太妙了!
  3. 菲尔茨奖得主丘成桐在清华设立数学英才班,比肩清华姚班
  4. 创意设计师变圆周率为彩色艺术品
  5. 深度学习-自然语言处理中的近似训练
  6. mac docker搭建开发环境
  7. vim的强大,vim设置和插件的使用,脱离windows才是王道
  8. Delta3d动态角色层
  9. 阿里 蚂蚁自研 IDE 研发框架 OpenSumi 正式开源
  10. 技术干货 | 应用性能提升 70%,探究 mPaaS 全链路压测的实现原理和实施路径