Springboot项目jar加密

部署的程序进行加密,防止第三方非法拷贝走项目进行二次开发或部署。我们知道java代码编译后生成的以.class结尾的字节码文件或者.jar/.war结尾的可执行文件都是可以反编译生成.java文件的,虽然反编译后生成的.java文件和原本的.java文件有些微差别,但这也可能有一定的安全隐患。

ClassFinal的组件比较好用。下面具体介绍下该组件的使用步骤:

1、下载jar包

https://repo1.maven.org/maven2/net/roseboy/classfinal-fatjar/1.2.1/classfinal-fatjar-1.2.1.jar

2、生成机器码

java -jar classfinal-fatjar-1.2.1.jar -C

这个指令执行完成后会生成一个code字符串,使用该字符串对指定jar包在指定机器上进行加密后,加密后的jar包只能在指定机器上运行,这样可以避免jar包被拷贝到其它服务器上运行。

3、对jar包进行加密

java -jar classfinal-fatjar-1.2.1.jar -file demo.jar -packages com.company.demo -cfgfiles application.yml -pwd xxxxxx -code XXXXXXXX27712E4846077E8FDD41D8DFADS98ECF8427ED41D8CD98FSXXXXXX7E --Y

这里面的-file demo.jar就指定了我们的应用程序的jar包,这里面的-packages com.company.demo就指定了要加密的包下面的代码,-cfgfiles application.yml就指定了要进行隐藏的配置文件,-code就是上文中我们生成的机器码,执行完这条指令后就会生成一个加密后的jar包,该jar包反编译后只能看到代码里面的方法名,具体的实现无法看到,配置文件中的内容也是空的。

4、运行加密后的jar包文件

nohup java -javaagent:demo-encrypted.jar="-pwd xxxxxx" -jar demo-encrypted.jar &

注意这里的-pwd xxxxxx和步骤3中对jar包进行加密时候的密码是要保持一致的。

相关推荐
探索java33 分钟前
Netty Channel详解:从原理到实践
java·后端·netty
追逐时光者43 分钟前
2025 年全面的 C#/.NET/.NET Core 学习路线集合,学习不迷路!
后端·.net
Monly211 小时前
RabbitMQ:生产者可靠性(生产者重连、生产者确认)
spring boot·rabbitmq·java-rabbitmq
ankleless2 小时前
Spring Boot 实战:从项目搭建到部署优化
java·spring boot·后端
百锦再2 小时前
一文精通 Swagger 在 .NET 中的全方位配置与应用
后端·ui·.net·接口·配置·swagger·访问
用户4822137167752 小时前
C++——静态数组、动态数组
后端
用户4822137167753 小时前
C++—— String 类详解
后端
BothSavage3 小时前
Java获取被nginx代理的emqx客户端真实ip
后端
David爱编程3 小时前
为什么线程不是越多越好?一文讲透上下文切换成本
java·后端
诗人啊_程序员3 小时前
Flask 路由与视图函数绑定机制
后端·python·flask