晚上好!
在我的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;
}
代码完美无缺 - 只有变音符号显示不正确,例如(应该是“ö-ä-ü”):
如何设置解密字符串的编码?在我的iOS应用程序中,我使用ASCII来编码已解码的下载字符串。这很完美! Android和iOS以相同的方式从同一个服务器获取字符串 - 所以我认为问题是上面的本地代码。
我希望你能帮我解决我的问题......谢谢!
答案 0 :(得分:0)
没有文字,只有编码文字。
好像你在猜字符集和编码 - 这是无法沟通的。
要恢复文本,您需要使用与每个步骤关联的参数反转应用于该文本的原始过程。
为了便于说明,假设服务器正在从Java String中获取文本并将其安全地发送给您。
要接收文字,你必须得到:
然后您可以撤消所有步骤。根据您的评论,您发现自己没有使用第2步中的编码。您还需要使用第3步中的编码。