赞
踩
文章目录
在单模块中,此方案还算简单,但是现在项目一般都是多模块。一个模块依赖多个公共模块。那么使用此方案就比较麻烦,配置复杂,文档难懂,各模块之间的调用在配置是否混淆时极其容易出错。
此方案比对上面的方案来说,就简单了许多,可以直接对打包好的 jar / war包执行命令,就可以实现源码的安全性保护。并且可以对yml、properties配置文件以及lib目录下的maven依赖进行加密处理。若想指定机器启动,支持绑定机器,项目加密后只能在特定机器运行。
1)下载classfinal-fatjar-1.2.1.jar(下载地址)
2)将自己的项目打包成jar包或war包
3)将classfinal-fatjar-1.2.1.jar移到第2)步jar包或war包所在的目录
4)打开cmd,执行命令
- java -jar classfinal-fatjar-1.2.1.jar -file yourproject.jar \
- -libjars a.jar,b.jar -packages com.yourpackage,com.yourpackage2 \
- -exclude com.yourpackage.Main -pwd yourpassword -Y
参数说明:
- -file 加密的jar/war完整路径
- -packages 加密的包名(可为空,多个用","分割)
- -libjars jar/war包lib下要加密jar文件名(可为空,多个用","分割)
- -cfgfiles 需要加密的配置文件,一般是classes目录下的yml或properties文件(可为空,多个用","分割)
- -exclude 排除的类名(可为空,多个用","分割)
- -classpath 外部依赖的jar目录,例如/tomcat/lib(可为空,多个用","分割)
- -pwd 加密密码,如果是#号,则使用无密码模式加密
- -code 机器码,在绑定的机器生成,加密后只可在此机器上运行。在待部署机器上,执行java -jar classfinal-fatjar-1.2.1.jar -C命令生成机器码
- -Y 无需确认,不加此参数会提示确认以上信息
示例:
- java -jar classfinal-fatjar-1.2.1.jar -file test-web-0.0.1-SNAPSHOT.jar \
- -libjars test-common-0.0.1-SNAPSHOT.jar -packages com.test \
- -exclude org.spring -cfgfiles *.yml -pwd # \
- -code 45A92A4CCFFDC3731746321DF1D8CD98F00B204E9800998ECF8123F -Y
说明:加密后生成yourproject-encrypted.jar,加密后的文件不可直接执行,需要添加-javaagent参数。
java -javaagent:yourproject-encrypted.jar -jar yourproject-encrypted.jar
java -javaagent:yourproject-encrypted.jar='-pwd=密码' -jar yourproject-encrypted.jar
示例:
- java -javaagent:/data/test-web-0.0.1-SNAPSHOT-encrypted.jar -jar \
- /data/test-web-0.0.1-SNAPSHOT-encrypted.jar \
- --spring.profiles.active=dev \
- --spring.config.location=/data/application-native.yml
1)SpringBoot 项目 Jar 包加密,防止反编译!
2)ClassFinal项目源码地址:https://gitee.com/roseboy/classfinal
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。