android - 错误的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
输入 =
解决方案
只是想分享答案,以防有人遇到同样的问题。结果实际上是正确的结果,缺少的部分是使用 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;
}
推荐阅读
- apache-kafka - Kakfa 重试概念 - Kafka 将停止哪些基础重试?
- r - 如何在 geom_step() 中指定线条颜色?
- javascript - react.js 形式的对象数组
- javascript - 您将如何设置 Node 以使用 Redis pub/sub 处理 SSE?
- c# - DataGrid CellEditEnding 事件未在 DataGridTemplateColumn 内的单元格编辑上触发
- gnuradio-companion - GNU Radio,如何使用 HackRF One 进行 BPSK 调制和解调?
- c++ - 时间:2019-05-10 标签:c++struct pointer to address struct error CDCDCD
- sql - SQL - 如何从日期范围中排除星期日
- windows - 当另一个 AppWindow 在第二台显示器上进入全屏时,如何保持 UWP AppWindow 全屏?
- c# - 如何随后更新单选按钮