解決IllegalBlockSizeException:last block incomplete in decryption異常

最近做個加解密的實現,雖然實現瞭,但是發現還有如下的異常出現:
javax.crypto.IllegalBlockSizeException: last block incomplete in decryption at org.bouncycastle.jce.provider.JCEBlockCipher.engineDoFinal(JCEBlockCipher.java:711) at javax.crypto.Cipher.doFinal(Cipher.java:1090)

google瞭一下,把結果總結一下
問題原因:
        可能是因為直接將一個string的byte []字符串直接加密成密文,在傳輸過程中,由於默認的編碼方式的問題可能會造成數據的丟失。(如果有更好的解釋,歡迎指出)
解決方法:
       將加密後的密文再進行整體的base64加密,解碼時先對其進行base64解密再進DES/AES解密,這樣就能保證接受數據的正確性並且不會缺失。

摘自 白果果白的專欄

發佈留言