搜索结果

×

搜索结果将在这里显示。

彩虹易支付的MD5秘钥和RSA对接说明

彩虹易支付对接:MD5 与 RSA‑2 签名两种方式讲解

彩虹易支付接口对接一共支持两种签名校验方式:MD5密钥签名RSA2非对称公私钥签名,两种方式都可以完成支付请求、回调验签,安全性、使用场景有明显区别。

对比项 MD5 密钥签名方式 RSA2(RSA‑2)非对称签名
密钥形式 通信双方共用同一个通信密钥(key) 商户私钥、平台公钥;两套密钥分开使用
签名原理 请求参数按照规则排序拼接字符串,拼接密钥后做MD5哈希得到sign签名 商户使用自己私钥生成请求签名;使用平台公钥校验回调返回数据
安全等级 一般,密钥泄露则全部请求可被伪造 高,私钥自己保管,只对外暴露公钥;即使公钥泄露无法伪造签名
使用难度 简单,绝大多数程序直接支持,代码实现简单 偏高,需要处理密钥生成、格式转换,部分老旧程序不支持
适用场景 个人测试、快速对接、二次开发程序、简单业务 正式商业生产环境、对安全要求高的业务
回调验签 同样使用同一密钥进行MD5校验 用彩虹易支付平台公钥校验回调的sign签名

一、MD5签名方式说明

工作流程

  1. 在彩虹易支付后台获取商户ID + MD5通信密钥。
  2. 业务系统组装请求参数,过滤空参数,按键名ASCII升序排序。
  3. 参数拼接成键=值&格式字符串,末尾拼接&key=你的密钥
  4. 对拼接后的完整字符串做MD5运算得到sign签名,随同参数一起提交给支付接口。
  5. 支付平台收到参数后,使用同样规则重新计算签名对比sign,校验请求合法性。
  6. 支付完成异步回调,同样带上sign,程序使用同一个密钥再次验签。

⚠️ MD5签名风险点

  • 密钥一旦泄露,攻击者可以伪造支付请求、伪造异步回调,模拟订单成功。
  • 密钥需要同时存放在你的业务程序和支付平台两边。
  • 适合测试、小型业务;不建议高流量正式业务使用。

二、RSA2(RSA‑2)非对称签名方式说明

密钥概念

  • 商户私钥:自己本地保存,绝对不能泄露;用于生成请求签名,传给彩虹易支付。
  • 商户公钥:提交上传到彩虹易支付后台,平台用来校验你发起的请求。
  • 彩虹易支付平台公钥:从后台复制保存到你的程序;用于校验平台推送过来的异步回调数据。
  • 平台私钥:保存在支付服务商,商户拿不到。

工作流程

  1. 本地生成RSA2公私钥对,商户公钥填写到彩虹易支付商户后台。
  2. 发起支付请求:业务参数排序处理,使用商户私钥对参数进行RSA2签名,生成sign。
  3. 接口提交参数+sign给到彩虹易支付;平台拿你上传的商户公钥验证签名。
  4. 用户完成付款,平台回调你的业务地址;平台使用平台私钥生成回调sign。
  5. 你的程序使用彩虹易支付平台公钥校验回调sign,确认回调真实有效。

✅ RSA2优势

  • 私钥只保存在自己服务器,不需要提交给支付平台;就算公钥泄露,攻击者无法伪造签名。
  • 就算回调接口被人访问,没有平台私钥就无法构造合法sign,无法伪造成功订单。
  • 生产环境强烈推荐RSA2方式对接。

三、对接选型建议

场景 推荐签名方式
本地调试、测试对接、二次开发简单程序 MD5,上手快,调试方便
正式上线运营、有资金交易、对外商业服务 必须 RSA2,安全性更高
旧源码程序仅支持MD5,没有RSA实现 只能MD5,注意做好服务器密钥保护,不要泄露key

四、常见踩坑问题

  • 签名失败:参数排序错误,带空值参数,参数大小写不一致,换行空格导致RSA密钥格式异常。
  • MD5与RSA不可混用:MD5对接就用MD5密钥验签;RSA对接就使用公私钥,不要交叉使用。
  • RSA密钥格式:注意PKCS#8、PKCS#1格式,PHP开发经常遇到密钥格式报错。
  • 异步回调验签:RSA模式回调不能拿商户私钥验签,必须使用平台公钥

声明:本文档来源于互联网公开资料整理,仅供开发学习参考,实际以彩虹易支付官方开发文档为准。

阅读:9
发布时间: