错误的AES解密结果

时间:2018-08-15 21:50:53

标签: android encryption aes

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

 //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;
}

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

输入= 1c6f645bed9019332e94b69bd0152015b41dfce6c7f83046a59e1f80bce302a1ea59ccd15adbd7fcd5e7579cdaea1178fa9540ff0afa74cfe85c4e3244f9255f6dc3808b76088203bf28af25191d9d79487a2f7fb3a53bf7ee50d735d748dd16fbc3f19f9ebcf33a44d95bb221ef47fb577450d207ce6c5b762dc70142c9b7c1d815137ce24bf34fd0f5d2e0ab618c9087ef62327657f1f6c31f164109a4d190973c998e02971e6438dfc1af8dffc28cad0aa9a91a62f57d15200934cd18935b93d7327f7f8a41498ac416d90316a963cc736ce5d4fcde8401ec2f83714c4b202ddb69ce5fde1b61d69caadc2c7a162d7e88f2c5c671832f0bc4f14c98a4e2b9c4c84666a60530623f17c2f960b60c4a7242e10752cb863d41153c451dfc7d5cc4e2e9a8f8c0641764c8fca05f7db2b6

1 个答案:

答案 0 :(得分:2)

只是想分享答案,以防有人偶然遇到相同的问题。 结果实际上是正确的结果,缺少的部分是使用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;
}