• C#进行SHA256WithRSA签名 ( 对应sign_type为RSA2 )


    我相信很多人有对第三方对接时进行过签名的经历,有很多第三方是没有提供C#的SDK的,需要自己实现签名代码,我想很多人在对接的过程中都可能遇到一些问题,比如第三方沟通费劲,第三方文档不齐全或有歧义等问题,这里不说这些问题,在这里主要把一些对接中遇到的代码问题注意点或解决办法进行总结,虽然内容很少,但有时一个问题确实让你卡在那里耽误很久时间:

     

    1-签名规则说明:

    一般的对接签名通常都是先将参数进行拼接,key=value&key=value,而且是按照每个key即每个参数名正序排序拼接的

    简单的如下

    app_id=2014072300007148&version=1.0

    复杂点的如下:

    app_id=2014072300007148&biz_content={"button":[{"actionParam":"ZFB_HFCZ","actionType":"out","name":"话费充值"},{"name":"查询","subButton":[{"actionParam":"ZFB_YECX","actionType":"out","name":"余额查询"},{"actionParam":"ZFB_LLCX","actionType":"out","name":"流量查询"},{"actionParam":"ZFB_HFCX","actionType":"out","name":"话费查询"}]},{"actionParam":"http://m.alipay.com","actionType":"link","name":"最新优惠"}]}&charset=GBK&method=alipay.mobile.public.menu.add&sign_type=RSA2&timestamp=2014-07-24 03:07:50&version=1.0

     

    使用各自语言对应的SHA256WithRSA(对应sign_type为RSA2)签名函数利用商户私钥对于待签字符串进行签名,并进行Base64编码。

     

    2-C#原生代码签名

    网上我相信很多人会找到很多相关的代码,但可能很多会有问题,签名后值是不对的,甚至会有异常,或者长度过长等原因,所以我这里不用这个方法

     

    3-借用第三方C#包

    这里呢说的不是用你当前对接的第三方包,刚也说了,很多第三方是不提供C#的SDK的,那用谁的呢,因为我以前对接过支付宝支付,我当初其实也是以尝试的心态去用了支付宝支付的C#的SDK包,结果还真可以,里面有我们需要的签名方法,但是呢,也遇到一些问题,有些方法是不对的,我说下我这里用的是支付宝的哪个SDK的哪个方法

    1)AlipaySDKNet.Standard包

    2)AlipaySignature.RSASign(signStr, privateKey, "utf-8", "RSA2", false)方法

    3)其他注意事项:待签名的字符串的不要有编码或乱码,可以参考上面的待签名内容格式;HTTP的请求参数格式,有的不一定是json的,这个需要问下你对接的第三方。

     

    我的公众号,谢谢关注:

     

  • 相关阅读:
    Unity之图片压缩,批量设置,导入自动设置
    Unity之可寻址资源之初始化,下载
    最优二叉树
    独立任务最优调度问题
    石子合并问题
    linux初学笔记
    码农
    用循环打印出多种三角形
    人机猜拳(这是最近的一个总结)
    期末总结
  • 原文地址:https://www.cnblogs.com/wangoublog/p/15263245.html
Copyright © 2020-2023  润新知