赞
踩
为加强对知识产权的保护,提高代码的安全性,很多公司对外都用到了代码的混淆、加密操作,最近公司也加强了对产权的保护,在网上找了一大圈发现了几个代码混淆工具插件,spring框架可用。
最开始找到了用proguard对代码进行混淆,调研半天过后果断放弃了。原因是配置的选项太多了,好不容易将配置弄完了结果编译的时候校验不通过,还有一点最重要的原因我用的JDK 11不兼容(也许是我没有配置对)
后来发现了ClassFinal,既可以对代码做处理,又可以对jar包进行加密操作,主要配置相对简单得多。JDK11可用。
先导入maven插件
<plugin> <groupId>net.roseboy</groupId> <artifactId>classfinal-maven-plugin</artifactId> <version>1.2.1</version> <configuration> <!-- 加密打包之后pom.xml会被删除,不用担心在jar包里找到此密码,当为 # 时不加密 --> <password>123456</password> <!-- 加密的包名(可为空,多个用","分割) --> <packages>com.suifengpiao.pro</packages> <!-- 配置说明文件,如果没有特殊的打包要求可以注销 cfgfiles 标签 --> <cfgfiles>application.yaml</cfgfiles> <!-- 排除的类名(可为空,多个用","分割) --> <!-- <excludes>com.suifengpiao.pro.userBusiness.controller.UserManagerController</excludes>--> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>classFinal</goal> </goals> </execution> </executions> </plugin>
到这里就已经配置完了。
接下来就是打包运行了,简单得很。
直接执行打包操作,等待打包完成
进入到对应的打包路径,这时会有两个打好的jar包
有一个是原本的包,有一个是以-encrypted.jar结尾 的包,顾名思义-encrypted.jar结尾的包就是混淆好的包。
混淆包里面的内容就是如下图,全部方法返回都是 return null;
接下来就是运行了,这里的密码就是前面配置文件里面配置的,#号的话可以不用输入密码,使用方式二启动。
方式一:
java -javaagent:包名-encrypted.jar='-pwd 123456' -jar 包名-encrypted.jar
方式二:
java -javaagent:包名-encrypted.jar -jar 包名-encrypted.jar
会弹出一个输入密码的地方,输入密码即可启动,无需密码的可以直接启动。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。