Добрый вечер!Ошибка Charset в AES Decryption на Android-системе
В моем приложении Android смартфоны загружают зашифрованную строку AES с моего сервера и сохраняют ее в переменной. После этого процесса переменная и ключ передаются методу, который расшифровывает строку. Моя ошибка в том, что немецкие умляуты (ä, ü, ö) неправильно декодированы. Все умляуты отображаются в виде вопросительных знаков с черным фоном ...
Мой код:
public static String decrypt(String input, String key) {
byte[] output = null;
String newString = "";
try {
SecretKeySpec skey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, skey);
output = cipher.doFinal(Base64.decode(input, Base64.DEFAULT));
newString = new String(output);
} catch(Exception e) {}
return newString;
}
код работает отлично - только умляуты отображается не правильно, пример в том, что (должно быть «ö-ä-ü «):
Как я могу установить кодировку расшифрованного String? В моем приложении iOS я использую ASCII для кодирования декодированной загруженной строки. Это работает отлично! Android и iOS получают строку с одного и того же Сервера таким же образом, поэтому я думаю, что проблема заключается в локальном коде выше.
Надеюсь, вы можете помочь мне с моей проблемой ... Спасибо!
Укажите кодировку при вызове 'String.getBytes()' и 'new String (byte) []) '. Не может быть непосредственной проблемой здесь, но это позволит избежать проблем в будущем. –
(а также не глотать исключение, а не ловить «Исключение» в первую очередь, а скорее ловить определенные исключения) –
Спасибо! Вы имеете в виду 'String.getBytes (" UTF-8 ")' и 'new String (byte []," UTF-8 ")'? Я добавил оба теста - никаких изменений ... Спасибо за ваш намек на ваш второй комментарий! – Waldi