1. 程式人生 > >解決Android客戶端RSA解密出來的明文含有一堆亂碼的問題

解決Android客戶端RSA解密出來的明文含有一堆亂碼的問題

這是值得銘記的時刻,我糾結了一下午都沒有找到問題

我的工程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