0
在我的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;
}
代碼工作完美 - 只有變音符號顯示不正常,一個例子是,(應該是「O型A-U 「):
如何設置解密的字符串的編碼?在我的iOS應用程序中,我使用ASCII編碼解碼下載的字符串。這很好用! Android和iOS以相同的方式從相同的服務器獲取字符串 - 所以我認爲問題在於上面的本地代碼。
我希望你能幫我解決我的問題......謝謝!
當您調用'String.getBytes()'和'new String(byte [])'。可能不是這裏的直接問題,但它會避免出現問題。 –
(以及不吞嚥異常;並且首先不捕獲「異常」,而是捕獲拋出的特定異常) –
謝謝!你的意思是String.getBytes(「UTF-8」)和'new String(byte [],「UTF-8」)'?我已經添加了兩個測試 - 沒有更改...感謝您的第二條評論中的提示! – Waldi