背景现象
服务之间的报文传输需要进行加密改造,发现上游发送过来表单请求(application/x-www-form-urlencoded)中的SM4密文解密不了
原因
客户端和服务端打印密文如下:
客户端打印密文:
U000AAEAAAAyAAAAAgAAAEAAAADYnadFTDMUfEBTv/STdyFPyUwhDRbdI+syV3Z9yvFh/hCNCugs5FUoCs4++I2dUQY4T5wIehN86Jc9KjSvWXmF
U000AAEAAAAyAAAAAgAAAEAAAADYnadFTDMUfEBTv/STdyFPyUwhDRbdI syV3Z9yvFh/hCNCugs5FUoCs4 I2dUQY4T5wIehN86Jc9KjSvWXmF
服务端打印密文
加密串中的加号+,到达服务端之后消失了,变成了一个空格
是因为表单请求到tomcat中处理的时候,会对表单的字段名称和字段值进行一次UrlDecode
String name;
String value;
if (decodeName) {
urlDecode(tmpName);
}
tmpName.setCharset(charset);
name = tmpName.toString();
if (valueStart >= 0) {
if (decodeValue) {
urlDecode(tmpValue);
}
tmpVa