美文网首页
签名无法通过HTTP传递

签名无法通过HTTP传递

作者: 一起DP吧 | 来源:发表于2019-08-02 15:35 被阅读0次

在开发中与其他银行系统对接时,发现对数据内容加签后,签名无法通过HTTP传递,无法验签。

httpPost.setHeader("signature", signature);

这是由于加密后签名存在特殊字符,不满足RFC 7230规范

org.apache.coyote.http11.Http11Processor - Error parsing HTTP request header
Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: The HTTP header line [o9esxbfw4jrokvrgreixks+9kpus/gXQhiwDId/gYbfPZ7smvwl96HXg1Stvi3Z2tbqDBYf2fYt1] does not conform to RFC 7230 and has been ignored.
does not conform to RFC 7230 and has been ignored.

解决办法1

在SpringBoot主启动类设置System属性,允许特殊字符

@Bean
public void allowRfc() {
    System.setProperty("tomcat.util.http.parser.HttpParser.requestTargetAllow", "|{}");
}

但是很遗憾,无效

解决办法2

通过URLEncoder对加密后的签名串encode

 //加签
 String signature = SignUtils.sign(PRIVATE_KEY_FILE, content);
 //真正的签名内容
 System.out.println("签名为:" + signature);
 //encode
 String other=URLEncoder.encode(signature,"UTF-8");
 //验签
 boolean b = SignUtils.verify(PUBLIC_KEY_FILE, content, URLDecoder.decode(other,"UTF-8"));
 if (b) {
     System.out.println("验签成功");
 } else {
     System.out.println("验签失败");
 }

亲测可行

相关文章

  • 签名无法通过HTTP传递

    在开发中与其他银行系统对接时,发现对数据内容加签后,签名无法通过HTTP传递,无法验签。 这是由于加密后签名存在特...

  • Java-02 方法&继承

    方法 参数传递 值类型是值传递,对象是引用传递,传递的是地址 方法签名 方法签名由方法名和参数类型组成, 不包括返...

  • Ripple共识过程中的各种View

    一条交易从发出到落链的过程 客户端通过ws,http发出签名/未签名的交易 节点接收到交易并检查签名 节点程序本地...

  • Android爬坑之微信支付

    微信支付需要在微信开放平台配置通过正式签名文件打包的apk获取到的应用签名 微信提供的获取应用签名apk:http...

  • SpringMVC(三)映射请求参数和请求头

    一、请求处理方法签名 SpringMVC通过分析处理方法的签名,将HTTP请求信息绑定到处理方法的相应入参中。 S...

  • 新能力|静态网站托管自定义域名支持强制 HTTPS

    前言 我们的请求在互联网中通过 HTTP 协议传递时是基于明文来进行传输的,由于无法对通信整体进行加密,在此过程中...

  • 【微信营销】第五招

    个性签名传递更多信息 呢称的容量毕竟有限。但我们可以使用个性签名作为呢称的补充,传递更多的信息。 很多人的个性签名...

  • java参数的传递

    基本类型作为参数是值传递 引用类型作为参数是引用传递(地址传递) 方法签名 方法签名有两部分组成:方法名和参数类型...

  • 为什么需要数字签名

    数字签名的意义 你想写一封密信给某人,传递某个信息,某人收到后通过数字签名确认信息来自于你而不是其他人。 实现步骤...

  • django-参数化url地址请求链接

    通过传统的”?”传递参数 例如,http://127.0.0.1:8000/plist/?p1=china&p2=...

网友评论

      本文标题:签名无法通过HTTP传递

      本文链接:https://www.haomeiwen.com/subject/erbldctx.html