科技公司做网站,做旅游网站赚钱吗,网站建设中关村,5g永久影院5g888这段时间在辛辛苦苦的编写一个算法程序#xff0c;担心部署到客户服务器#xff0c;客户反编译jar包#xff0c;破解程序#xff0c;那努力就白费了#xff01;
在网上查询#xff0c;发现个好东东#xff0c;classfinal可以加密jar包#xff0c;防止反编译#xff0…这段时间在辛辛苦苦的编写一个算法程序担心部署到客户服务器客户反编译jar包破解程序那努力就白费了
在网上查询发现个好东东classfinal可以加密jar包防止反编译简单钻研了下真是太棒了 先奉上官方的资料方便自行查看研究 官方文档 https://gitee.com/roseboy/classfinal jar包下载地址 https://repo1.maven.org/maven2/net/roseboy/classfinal-fatjar/1.2.1/classfinal-fatjar-1.2.1.jar
1.classfinal加密的几个主要功能
1.1加密class文件主要是对方法返回null处理 1.2隐藏配置文件中的内容 1.3启动加密设置 1.4加密后只允许指定机器启动
下载到classfinal-fatjar-1.2.1.jar依赖在当前依赖下cmd执行java -jar classfinal-fatjar-1.2.1.jar -C命令会自动生成一串机器码 将此生成好的机器码放到maven插件中的code里面即可。这样打包好的项目只能在生成机器码的机器运行其他机器则启动不了项目。
2.classfinal加密的几种主要方式
2.1使用命令
java -jar classfinal-fatjar.jar -file login-0.0.1-SNAPSHOT.jar -packages com.ht.login -exclude org.spring -pwd 123456 -Y参数说明
-file 加密的jar/war完整路径
-packages 加密的包名(可为空,多个用,分割)
-libjars jar/war包lib下要加密jar文件名(可为空,多个用,分割)
-cfgfiles 需要加密的配置文件一般是classes目录下的yml或properties文件(可为空,多个用,分割)
-exclude 排除的类名(可为空,多个用,分割)
-classpath 外部依赖的jar目录例如/tomcat/lib(可为空,多个用,分割)
-pwd 加密密码如果是#号则使用无密码模式加密
-code 机器码在绑定的机器生成加密后只可在此机器上运行
-Y 无需确认不加此参数会提示确认以上信息备注各种启动方式参数格式不同但是意义相同
2.2使用插件
plugin!-- https://gitee.com/roseboy/classfinal --groupIdnet.roseboy/groupIdartifactIdclassfinal-maven-plugin/artifactIdversion${classfinal.version}/versionconfigurationpassword#/password!--加密打包之后pom.xml会被删除不用担心在jar包里找到此密码--packagescom.ht.login/packagescfgfilesapplication.properties/cfgfilesexcludesorg.spring/excludescode735C799B40EED51AE4101D0B5CB70010D41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E/codelibjars/libjars/configurationexecutionsexecutionphasepackage/phasegoalsgoalclassFinal/goal/goals/execution/executions
/plugin注意插件配置放在Maven插件之后Maven插件打包完成再调用classfinal对jar重新打包生成一个带有-encrypted的jar包
3.jar包加密后的启动方式
title login-0.0.1-SNAPSHOT
chcp 65001
java -Dfile.encodingutf-8 -Xms1g -Xmx1g -Xmn512M -server -javaagent:login-0.0.1-SNAPSHOT.jar -jar login-0.0.1-SNAPSHOT.jar --spring.profiles.activedev app.log 21 在Windows系统下可新建一个start.cmd文件输入以上命令双击即可启动