我想解碼從web服務得到的AES加密數據。 加密長度:4256個字節 解密的長度:4247個字節Android - AES解密失敗,奇怪的內容長度
Baiscally我想這是因爲一些填充或東西... 但確定。數據實際上可以很好地解密爲純文本。除了最後一些字符丟失。
什麼可能導致最後缺少的字符?
這纔是我的解密代碼:
public static byte[] decrypt(byte[] input) throws Exception {
byte[] rawKey = getKey("bla".getBytes());
SecretKeySpec secretKeySpec = new SecretKeySpec(rawKey, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
AlgorithmParameterSpec iv = new IvParameterSpec(new byte[] { 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, iv);
return cipher.doFinal(input);
}
你(或者webservice,實際上)是否使用相同的模式(專門填充)進行加密? –
另請注意:具有常數初始化向量的CBC不是安全模式。您希望爲每個消息使用一個新的隨機生成的初始化向量(並將其與消息一起傳輸)。 –
我知道,但不幸的是我無法訪問服務器端代碼,這是在服務器端(.NET)使用的配置來執行加密。它似乎工作,因爲90%的文本解密相關... – Goddchen