前言:
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包