解決Android客戶端RSA解密出來的明文含有一堆亂碼的問題
阿新 • • 發佈:2018-12-20
這是值得銘記的時刻,我糾結了一下午都沒有找到問題
我的工程demo地址(demo裡這句程式碼沒有改,你用的時候直接改下就ok了)
今天在用Rsa解密服務端的資料時,碰到了部分亂碼的問題,雖然能解密出正確的資料但是裡面會多出一堆亂碼.一開始以為是編碼的問題,可是全都設定成了utf-8也是不行;
最後的解決方法如下:
- 移動端私鑰解密
在移動端獲取解密的Cipher類時要使用Cipher.getInstance(“RSA/ECB/PKCS1Padding”);
移動端的RSAUtils中有這樣一個方法:
/** * 用私鑰解密 * * @param encryptedData * 經過encryptedData()加密返回的byte資料 * @param privateKey * 私鑰 * @return */ public static byte[] decryptData(byte[] encryptedData, PrivateKey privateKey) { try { //這句和java端不一樣 Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); cipher.init(Cipher.DECRYPT_MODE, privateKey); return cipher.doFinal(encryptedData); } catch (Exception e) { return null; } }
在後端使用Cipher.getInstance(“RSA”);來獲取.
java後端使用這種方式獲取Cipher