おはよう!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;
}
はコードが完璧に動作します - だけウムラウトが正しくない表示され、例は、(「O-A-üでなければならないことです「):
私は復号化された文字列のエンコーディングを設定するにはどうすればよい?私のiOSアプリケーションでは、デコードされたダウンロードされたStringをエンコードするためにASCIIを使用します。それは完璧に動作します! AndroidとiOSは同じ方法で同じサーバーからStringを取得します。そのため、問題は上記のローカルコードです。
私の問題で私を助けてくれることを祈っています...ありがとう!
'String.getBytes()'と 'new String(byte []) '。ここで直面する問題ではないかもしれませんが、それは道に沿って問題を避けるでしょう。 –
(例外を飲み込むのではなく、最初に「例外」をキャッチせず、むしろ投げられる特定の例外をキャッチします) –
ありがとう! 'String.getBytes(" UTF-8 ")'と '新しい文字列(byte []、" UTF-8 ")を意味しますか?私は両方のテストを追加しました - 変更はありません...あなたの2番目のコメントにあなたのヒントをありがとう! – Waldi