第三方平台单点登录到我们平台的时候,使用签名的方式验证数据是否在传输过程中被修改,因为签名出现类似“+”这样的特殊字符,到我们平台接收参数发现"+"被过滤掉了,后来检查确定为spring mvc自动绑定了参数特殊字符的过滤功能,考虑到无法去掉这个过滤器,所以用base64对参数进行加密(sun.misc.BASE64Encoder)解密(sun.misc.BASE64Decoder),这样参数传输的时候就不会有特殊字符出现,具体用法如下面的demo:
String str = "13212123132学生??+'''///&*&";
String ret = null;
ret = Base64.encode(str.getBytes()); //加密
System.out.println("加密前:"+str);
System.out.println(" 加密后:"+ret);
try {
ret = new String(Base64.decode(ret)); //解密
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(" 解密后:"+ret);