java~jar防止反編譯
對于jar包(bao),如果是(shi)為客戶私有化部署的,會將(jiang)jar包(bao)給客戶,這(zhe)時就(jiu)會有源代碼泄(xie)露的風(feng)險,你(ni)的一些(xie)加密(mi)(mi)算(suan)法,密(mi)(mi)鑰就(jiu)公開了,所以(yi)我們需要(yao)為jar包(bao)進行加密(mi)(mi),或者叫(jiao)字節碼混淆(xiao)。
classfinal
classfinal是(shi)一個(ge)字節碼混淆工(gong)具,我們可以直接把它集(ji)成到(dao)maven里,以插(cha)件(jian)的形(xing)式去使用它,下面是(shi)配(pei)置文件(jian)
<plugin>
<groupId>net.roseboy</groupId>
<artifactId>classfinal-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<password>#</password><!-- #表示啟動時不需要密碼,事實上對于代碼混淆來說,這個密碼沒什么用,它只是一個啟動密碼 -->
<packages>com.pkulaw.test.register</packages><!-- 加密的包名,多個包用逗號分開-->
<excludes>org.spring</excludes>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>classFinal</goal>
</goals>
</execution>
</executions>
</plugin>
進行maven install之后,會多生成一個jar文件,后綴是encrypted.jar,原來的jar文件還是明文的,以后可以用被加密的encrypted.jar

JD-GUI查看源碼
通過JD-GUI我們可以查看JAR的源代碼

而別一個文件,encrypted.jar后綴的,它的類里的方法都是空的,說明被保護了

另外(wai),代(dai)碼混淆工(gong)具還有很多,大家也可以嘗(chang)試一下(xia)其它的(de)工(gong)具。