网站百度权重怎么提升,设计服务网络建设方案,网页升级更新自动更新,怎样打开网站制作今天看到了一个说明jar包加密的实现方式#xff0c;特意试了下效果#xff0c;并下载了插件源码及实现源码查看了下子#xff0c;感兴趣的可以在最后得到gitee地址。 SpringBoot 程序 Jar 包加密的方式#xff0c;通过代码加密可以实现无法反编译。应用场景就是当需要把公司… 今天看到了一个说明jar包加密的实现方式特意试了下效果并下载了插件源码及实现源码查看了下子感兴趣的可以在最后得到gitee地址。 SpringBoot 程序 Jar 包加密的方式通过代码加密可以实现无法反编译。应用场景就是当需要把公司的产品部署到友方公司或者其他公司时可以防止客户直接反编译出来源码大大提升代码的安全性。
第一种是代码混淆的方式可以参考proguard-maven-plugin插件使用配置比较复杂。
第二种方式是使用代码加密的方式classfinal-maven-plugin方式比较简单只需要在pom.xml文件中引入一个plugin然后简单的修改几项配置即可使用。这种方式不仅可以对代码进行加密对配置文件application.yml、lib 下的依赖也可以加密以及指定机器运行程序。 开始验证
首先创建一个测试jar包在此基础上开始
pom.xml 中加入
plugin!--1. 加密后,方法体被清空,保留方法参数、注解等信息.主要兼容swagger文档注解扫描2. 方法体被清空后,反编译只能看到方法名和注解,看不到方法体的具体内容3. 加密后的项目需要设置javaagent来启动,启动过程中解密class,完全内存解密,不留下任何解密后的文件4. 启动加密后的jar,生成xxx-encrypted.jar,这个就是加密后的jar文件,加密后不可直接执行5. 无密码启动方式,java -javaagent:xxx-encrypted.jar -jar xxx-encrypted.jar6. 有密码启动方式,java -javaagent:xxx-encrypted.jar-pwd 密码 -jar xxx-encrypted.jar--groupIdnet.roseboy/groupIdartifactIdclassfinal-maven-plugin/artifactIdversion1.2.1/versionconfiguration!-- #表示启动时不需要密码,事实上对于代码混淆来说,这个密码没什么用,它只是一个启动密码 --passwordpeach123/passwordexcludesorg.spring/excludes!-- 加密的包名,多个包用逗号分开 --packages${groupId}/packages!-- 加密的配置文件,多个包用逗号分开 --cfgfilesapplication.yml,application-dev.yml,application.properties/cfgfiles!-- jar包lib下面要加密的jar依赖文件,多个包用逗号分开 --libjarshutool-all.jar/libjarscodeE5967EA3B33C21242D5FA564E125E276D41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E/code !-- 指定机器启动,机器码 --/configurationexecutionsexecutionphasepackage/phasegoalsgoalclassFinal/goal/goals/execution/executions
/plugin
注意需在
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-maven-plugin/artifactId
后添加 2. 上述代码中的机器码可以使用如下工具生成进去之后点击下载 https://repo1.maven.org/maven2/net/roseboy/classfinal-fatjar/1.2.1/classfinal-fatjar-1.2.1.jar 3. 然后执行注意最后参数为大写的C。 java -jar classfinal-fatjar-1.2.1.jar –C 4. 最后将输出的机器码放入到上方的 code 中即可。 不在指定的机器码生成机器启动项目 5. 执行 Maven 命令打包即可生成文件如下其中emm-business-demo-0.0.1-SNAPSHOT-encrypted.jar为生成的加密jar 包。
如需提供给客户提供该包即可。 使用反编译工具查看 jar 包中配置文件可以看到配置文件已经为空
未加密 加密包 加密代码 未加密 可以看到方法体被清空只保留了方法参数、注解等信息
6. 无密码启动
java -javaagent:加密jar包的名称 -jar 加密jar包的名称
java -javaagent:emm-business-demo-0.0.1-SNAPSHOT-encrypted.jar -jar emm-business-demo-0.0.1-SNAPSHOT-encrypted.jar 7. 有密码启动 输入密码错误 输入密码正确 具体的功能及实现方式可以查看 https://gitee.com/roseboy/classfinal/tree/master