1 在對(duì)接加密解密的時(shí)候,相同文本Base64編碼后客税,移動(dòng)端與服務(wù)端出現(xiàn)不一樣的密文况褪。移動(dòng)使用的是Android_SDK 默認(rèn)自帶的android.util.Base6。
2 果斷使用服務(wù)端一樣的jar包c(diǎn)ommons-codec更耻,編譯通過運(yùn)行卻崩潰了测垛,出現(xiàn)錯(cuò)誤:java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.<init>
3 根本原因在于Android內(nèi)置了一個(gè)Codec庫,引入新版本的codec.jar執(zhí)行其中的方法時(shí)酥夭,優(yōu)先加載的是系統(tǒng)自帶的codec庫中相應(yīng)的方法赐纱,android.util.Base6中不包含新版本要調(diào)用的方法脊奋,從而產(chǎn)生了異常熬北!
4 處理辦法:修改commons-codec.jar包里面的包名,這樣就不會(huì)加載默認(rèn)的方法诚隙,而是加載修改了包名的jar里面的方法讶隐。下載源碼進(jìn)行修改這個(gè)比較繁瑣,使用jarjar.jar這個(gè)工具來修改方便快捷久又。jarjar.jar修改的過程可以參考博客https://www.cnblogs.com/yejiurui/p/4283505.html巫延。
5 再此貼出已經(jīng)修改了包名的commons-codec-1.10.jar 和 commons-codec-1.11.jar效五。
包名由org.apache.commons.codec 改成 org.myapache.commons.codec
地址:https://download.csdn.net/download/seawaveai/10843209