ClassFinal对项目进行加密处理

老板要求内部算法模型加密,找了XJAR方法和proguard方法,XJAR很傻瓜,我调用不了里面的API,proguard软件需要配置的东西太多,也没有清晰的教程,因此选择了ClassFinal方法。

此种方法相比于proguard,采用maven仓库导入相应的依赖,再打包便可生成加密的jar包

目录

1.进行pom.xml配置,导入相应的依赖

2.配置完pom.xml后,便可打包生成加密文件

3.配置javaagent

4.测试项目能否成功运行 

1.进行pom.xml配置,导入相应的依赖

pom.xml的配置

   
                
                net.roseboy
                classfinal-maven-plugin
                1.2.1
                

                    #
                    com.itheima
                    application.properties
                    org.spring
                    
                
                
                    
                        package
                        
                            classFinal
                        
                    
                
            

参数说明,其中重要的是password和packges,密码最好不要设置,我反正是不断报错,直接设成无密码格式,包名层级用.号隔开,跟springmvc扫描包的感觉差不多。这样子就可以把包下的文件全部进行加密,成如下的形式。

ClassFinal对项目进行加密处理_第1张图片

加密前

ClassFinal对项目进行加密处理_第2张图片

加密后

ClassFinal对项目进行加密处理_第3张图片  

直接隐藏方法内容,非常给力  

-file        加密的jar/war完整路径
-packages    加密的包名(可为空,多个用","分割)
-libjars     jar/war包lib下要加密jar文件名(可为空,多个用","分割)
-cfgfiles    需要加密的配置文件,一般是classes目录下的yml或properties文件(可为空,多个用","分割)
-exclude     排除的类名(可为空,多个用","分割)
-classpath   外部依赖的jar目录,例如/tomcat/lib(可为空,多个用","分割)
-pwd         加密密码,如果是#号,则使用无密码模式加密
-code        机器码,在绑定的机器生成,加密后只可在此机器上运行
-Y           无需确认,不加此参数会提示确认以上信息

2.配置完pom.xml后,便可打包生成加密文件

加密文件如下形式

3.配置javaagent

完成后,打开jar包所在目录,输入cmd,打开命令行窗口,输入以下命令(注意将文件名改成自己加密文件的文件名)

java -javaagent:yourproject-encrypted.jar='-pwd 123' -jar yourproject-encrypted.jar

我输入的命令行(无密码模式)

java -javaagent:springboot_01_01_quickstart-0.0.1-SNAPSHOT-encrypted.jar -jar springboot_01_01_quickstart-0.0.1-SNAPSHOT-encrypted.jar

 因为我设置的是无密码模式,程序直接跳转运行

ClassFinal对项目进行加密处理_第4张图片


项目成功运行,也成功加密,非常给力。我用的是JDK11版本,所支持的版本也非常高,proguard才支持JDK1.8,非常不行 

ClassFinal对项目进行加密处理_第5张图片

 参考:ClassFinal 对 java 代码进行混淆和加密_清泉影月的博客-CSDN博客_classfinal

你可能感兴趣的:(java)