前言:
1 在对接加密解密的时候,相同文本Base64编码后,安卓端与java服务端出现不一样的密文。
安卓端导入的包是:android.util.Base64
java服务端导入的包是:org.apache.commons.codec.binary.Base64
2 果断使用服务端一样的jar包 commons-codec-1.11.jar,编译通过运行却崩溃了,出现错误:java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.<init>
what?一脸懵逼,两脸懵逼,三脸懵逼???
好吧,经过一顿操作猛如虎的折腾度娘之后,找到原因是:
链接:https://pan.baidu.com/s/1VXOII_HKUPGjYioPuMY2jA
提取码:ceiv
1. rule用來取代Package的名称。
rule pattern result
2.zap用來移除符合名称的Package。
zap pattern
3.keep只会保留符合的Package的名称,其他的則會刪除。如果和zap一起使用,將會在zap执行完之后才執行。
keep pattern
备注: pattern为要比对的字串,可以使用「*」和「**」來表示任意的Package名称。「*」可以代表一层的Package,「**」可以代表多层的Package。
result为要取代成的字串,可以使用「@1」、「@2」这类的符号表示要使用第几个pattern的「*」或「**」所代表的字串。
如果要将Jar包內的「org.apache.commons.codec」名称全都替換成「changed.org.apache.commons.codec」,可以编写以下的rules.txt:
rule pattern result
zap pattern
rule org.apache.commons.codec.** changed.org.apache.commons.codec.@1
4.打开cmd,输入以下命令,即可得到一个修改过包名的jar包:
java -jar jarjar.jar process ./rule.txt commons-codec-1.11.jar ./changed-commons-codec-1.11.jar
备注:commons-codec-1.11.jar 是想要修改包名的jar包,changed-commons-codec-1.11.jar是修改包名后的jar包