AES加密结果有+号浏览器转义后解密失败
原因描述
在开发某功能时, 要求提供一个跳转链接让用户通过点击可以跳转; 对该跳转链接参数进行拼接时某参数要求用AES加密后的字符串, 问题出在加密后的字符串携带"+"符号; 而该符号在浏览器中会被替换为空格并转移为'%20';
此时跳转链接点击后,在浏览器中改加密参数中的"+"被替换为了"%20"空格转义符号, 后台接收到加密参数进行解密时会出现解密错误(因为有字符被替换).
问题解决
在构造跳转链接时, 提前将加密后的字符串进行转义, 如此对于浏览器来说, 输入的参数中包含的不是"+", 而是"+"转义后的字符, 如此就不会替换为空格;
在Java中, 可以调用JDK自带的路径编码API, 如下所示:
java
URLEncoder.encode(aesEncode, "UTF-8")