Android Cipher шифрует / дешифрует
используя шифр для шифрования и дешифрования сообщений:
public String encrypt(String string) throws InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] stringBytes = string.getBytes("UTF-8");
byte[] encryptedBytes = cipher.doFinal(stringBytes);
return android.util.Base64.encodeToString(encryptedBytes, android.util.Base64.DEFAULT);
}
public String decrypt(String string) throws InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] stringBytes = android.util.Base64.decode(string.getBytes(), android.util.Base64.DEFAULT);
byte[] decryptedBytes = cipher.doFinal(stringBytes);
return new String(decryptedBytes,"UTF-8");
}
По какой-то причине, хотя яИспользуя Base64 для кодирования и декодирования строки, я все еще получаю эту ошибку:
javax.crypto.IllegalBlockSizeException: последний блок не завершен в расшифровке
Что я делаю неправильно?
Редактировать:
Это мой JSONObject - яя пытаюсь расшифровать «м»:
{"m":"Cu7FR2be0E6ZP2BrZaLU2ZWQSfycNg0-fPibphTIZno\r\n"}
Странно то, что ошибка появляется только в Android. Мой сервер написан на Java, и яЯ использую кодировщик Apache Base64, и он отлично работает.