问题描述
如上所示,上面是我使用AES算法加解密数据时
遇到的错误,本来前后端加密和解密没啥问题
,但是当改为Json格式
以后就出问题了。前端无法解密,并且报出上述错误。debug的时候发现得到的Json字符格式
也是对,前端也没有发现问题。
后端代码
String str = JSON.toJSONString(response);
其中response
对象中包含了一个Map<String , String>
对象。其中JSON
是alibaba
的库
解决
排查一番后找到了答案:
这是因为alibaba的Json库在将Map对象转换为字符串时,可能会出现非UTF-8编码的字符
,这些字符在使用crypto-js进行解密时可能会导致编码问题
,从而导致解密失败。
后面用了ObjectMapper
代替JSON
,代码如下:
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(response);