안녕하세요!Android 시스템의 AES 암호 해독에서 문자 세트 버그
내 안드로이드 앱에서 스마트 폰은 내 서버에서 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;
}
이 코드는 완벽하게 작동합니다 - 단지 움라우트가 제대로되지 표시 예는 ("오-A-ü해야한다는 것입니다 ") :
내가 해독 된 문자열의 인코딩을 설정하는 방법? 내 IOS 응용 프로그램에서 나는 ASCII를 사용하여 디코딩 된 다운로드 문자열을 인코딩합니다. 그건 완벽하게 작동합니다! Android와 iOS는 같은 방식으로 동일한 서버에서 문자열을 얻습니다. 그래서 문제는 위의 지역 코드입니다.
내 문제를 해결할 수 있기를 바랍니다 ... 감사합니다.
'String.getBytes()'및'new String (byte [])'. 당장의 문제는 아니 겠지만, 문제가 발생하지는 않을 것입니다. –
(예외를 삼키지 않고 처음에는 예외를 잡는 것이 아니라 특정 예외를 잡는 것) –
감사합니다! 'String.getBytes ("UTF-8")'과'새로운 String (byte [], "UTF-8")'을 의미합니까? 두 가지를 추가하여 테스트 해 보았습니다. 변경 사항 없음 ... 두 번째 주석에 대한 힌트를 주셔서 감사합니다! – Waldi