首页 > 解决方案 > 错误的AES解密结果

问题描述

我正在尝试使用 AES (256/ECB) 解密服务器响应,但得到错误的结果。当我使用此在线工具尝试相同的输入时,我得到了正确的结果,但运行我的代码却给出了错误的结果。这是我的解密代码

 //input is a Hex encoded String of the response     
 public String decryptString(String input){
    SecretKeySpec keySpec = new SecretKeySpec(Hex.decodeHex(key),"AES");
    Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.DECRYPT_MODE,keySpec);
    byte[] output = cipher.doFinal(Hex.decodeHex(input));
    String outputString = Base64.encodeBase64String(output);
    return outputString;
}

我在在线工具中输入的参数是:key = 57e17ae84ceb2938c1f464e902f004919ea08fa7de5e358d1df028fde98d456d

输入 =

标签: androidencryptionaes

解决方案


只是想分享答案,以防有人遇到同样的问题。结果实际上是正确的结果,缺少的部分是使用 UTF-8 字符集将生成的字节数组编码为字符串。函数变为

public String decryptString(String input){
    SecretKeySpec keySpec = new SecretKeySpec(Hex.decodeHex(key),"AES");
    Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.DECRYPT_MODE,keySpec);
    byte[] output = cipher.doFinal(Hex.decodeHex(input));
    String outputString = new String(output,"UTF-8");
    return outputString;
}

推荐阅读