SpringBoot使用classfinal-maven-plugin插件加密Jar包的示例代码
jar包加密
1、在启动类的pom.xml中加入classfinal-maven-plugin插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>net.roseboy</groupId>
<artifactId>classfinal-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<password>#</password> <!--启动密码,#为空-->
<excludes>org.spring</excludes>
<packages>${groupId}</packages> <!--需要加密的包名,有多个使用逗号分隔-->
<cfgfiles>application.yml,spy.properties,ehcache.xml</cfgfiles> <!--需要加密的配置文件,有多个使用逗号分隔-->
<libjars>SuperDog.jar</libjars> <!--jar包lib目录下要加密的jar依赖,有多个使用逗号分隔-->
<code></code> <!--机器码,指定某个机器启动-->
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>classFinal</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2、在右侧的maven工具栏中使用install,xxx-encrypted.jar是加密后的jar包

3、加密后的jar包不能直接运行,要设置javaagent来启动,启动过程中会解密
//无密码启动 java -javaagent:APF_AssetServer-encrypted.jar -jar APF_AssetServer-encrypted.jar //有密码启动 java -javaagent:APF_AssetServer-encrypted.jar='-pwd=密码' -jar APF_AssetServer-encrypted.jar //增加其他参数启动 java -javaagent:APF_AssetServer-encrypted.jar -jar -Xmx512m -Xms512m APF_AssetServer-encrypted.jar --spring.profiles.active=APF_AssetServer-encrypted
反编译效果
class文件只能看到方法名、参数和注解,方法内容被清空
配置文件变成空白


绑定机器启动
1、下载 classfinal-fatjar-1.2.1.jar
2、执行 java -jar classfinal-fatjar-1.2.1.jar -C
3、将生成的机器码,放到maven插件的code里

到此这篇关于SpringBoot使用classfinal-maven-plugin插件加密Jar包的示例代码的文章就介绍到这了,更多相关SpringBoot classfinal-maven-plugin加密Jar包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
elasticsearch的灵魂唯一master选举机制原理分析
这篇文章主要为大家介绍了elasticsearch的灵魂唯一master选举机制原理分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-04-04
mybatis配置mapper-locations位置的三种方式小结
这篇文章主要给大家介绍了关于mybatis配置mapper-locations位置的三种方式,Mybatis-Plus的初衷是为了简化开发,而不建议开发者自己写SQL语句的,但是有时客户需求比较复杂,需要的朋友可以参考下2023-08-08
IntelliJ IDEA中如何使用Checkstyle对Java代码规范检查
这篇文章主要介绍了IntelliJ IDEA中如何使用Checkstyle对Java代码规范检查的相关资料,checkstyle是提高代码质量,检查代码规范的很好用的一款工具,文中通过代码介绍的非常详细,需要的朋友可以参考下2026-03-03
多线程-lock与lockInterruptibly的区别及说明
文章主要讨论了Java中ReentrantLock的lock和lockInterruptibly方法的区别,以及AQS中的双向链表设计,lock方法不响应中断,而lockInterruptibly方法会响应中断,AQS的双向链表设计使得线程管理更加高效和灵活,适用于高并发场景2025-02-02


最新评论