一:介绍
ClassFinal是一款java class文件安全加密工具,支持直接加密jar包或war包,无需修改任何项目代码,兼容spring-framework;可避免源码泄漏或字节码被反编译。
二:功能特性
- 无需修改原项目代码,只要把编译好的jar/war包用本工具加密即可。
- 运行加密项目时,无需求修改tomcat,spring等源代码。
- 支持普通jar包、springboot jar包以及普通java web项目编译的war包。
- 支持spring framework、swagger等需要在启动过程中扫描注解或生成字节码的框架。
- 支持maven插件,添加插件后在打包过程中自动加密。
- 支持加密WEB-INF/lib或BOOT-INF/lib下的依赖jar包。
- 支持绑定机器,项目加密后只能在特定机器运行。
- 支持加密springboot的配置文件。
三:实操步骤
1.下载源码
git地址:https://gitee.com/roseboy/classfinal.git
2.项目打包
注:加密程序包位置
3.加密前准备
获取专属机器码:执行dos 命令
java -jar classfinal-fatjar-1.2.1.jar -C
4.开始加密
4.1 加密执行dos命令
java -jar classfinal-fatjar.jar -file ${需要的包的jar} -libjars ${需加密的依赖包1},${需加密的依赖包2} -packages ${加密包名1},${加密包名2} -exclude ${无需加密的文件} -pwd ${密码} -code ${机器码} -Y
4.2 命令之参数说明
-file 加密的jar/war完整路径
-packages 加密的包名(可为空,多个用","分割;例如com.biz)
-libjars jar/war包lib下要加密jar文件名(可为空,多个用","分割)
-cfgfiles 需要加密的配置文件,一般是classes目录下的yml或properties文件(可为空,多个用","分割)
-exclude 排除的类名(可为空,多个用","分割)
-classpath 外部依赖的jar目录,例如/tomcat/lib(可为空,多个用","分割)
-pwd 加密密码,如果是#号,则使用无密码模式加密
-code 机器码,在绑定的机器生成,加密后只可在此机器上运行
-Y 无需确认,不加此参数会提示确认以上信息
4.3 demo
jar包:demo.jar
密码:123456
code:8289EC0890F26285EC4771FE8036D59FD41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E
code获取:java -jar classfinal-fatjar-1.2.1.jar -C
加密命令:
java -jar classfinal-fatjar-1.2.1.jar -file demo.jar -packages ${com.test.server} -pwd ${pwd} -code ${code} -Y
=========================================================
= =
= Java Class Encryption Tool v1.2.1 by Mr.K =
= =
=========================================================
加密信息如下:
-------------------------
1. jar/war路径: demo.jar
2. lib下的jar:
3. 包名前缀: com.test.server
4. 排除的类名:
5. 加密配置文件:
6. ClassPath:
7. 密码: 123456
8. 机器码: 8289EC0890F26285EC4771FE8036D59FD41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E
-------------------------
处理中...
加密完成,请牢记密码!
==>demo-encrypted.jar
4.4启动jar命令
java -javaagent:demo-encrypted.jar -jar demo-encrypted.jar
之后根据提示后输入刚才加密时输入的密码,完成启动。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
END 撒花~~