RSA签名、验签、加密、解密

 

加验签 

接口加签方式,是指应用在调用接口时,需要通过密钥证书对消息内容进行加签、验签,从而保证双方通信消息的安全性和真实性。

 

名词解释

应用私钥:用来给应用消息进行签名,请务必要妥善保管,避免遗失或泄露。

应用公钥:需要提供给支付宝开放平台,平台会对应用发送的消息进行签名验证。

支付宝公钥:应用收到支付宝发送的同步、异步消息时,使用支付宝公钥验证签名信息。

支付宝私钥

 

加签方式说明

主要分为以下两种加签方式:

接口加签方式

密钥

证书

特性

安全性、真实性

安全性、真实性、抗抵赖

相应文件

应用私钥、应用公钥、支付宝公钥

应用私钥、应用公钥、应用公钥证书、支付宝公钥证书、支付宝根证书

适用场景

除资金支出类场景外,都可以使用密钥加签方式

现金红包转账到支付宝账户 必须使用证书加签方式

 

限制与要求

  • 需要使用支付宝开放平台主账号进行配置。
  • 一个应用(APPID)只能配置一种接口加签方式(密钥或证书)。

 

加签与验签机制说明

商家在应用中使用自己的 私钥 对消息加签之后,消息和签名会传递给支付宝,支付宝则使用应用的 公钥/公钥证书 验证消息的真实性(来自于合法应用的真实消息)。

对于支付宝返回消息给商家应用的情形,应用则使用支付宝的 支付宝公钥支付宝公钥证书及支付宝根证书 等来验证返回消息的真实性。

注意

  • 商家应用必须保障应用私钥的安全性,从而才能保障应用和和支付宝交互的安全性。
  • 公钥证书模式中上传的文件,无论是 CSR 文件或者开发者自己申请的公钥证书文件,必须和用户本地代码中加密的应用私钥是匹配的,否则会导致支付宝开放平台验签失败。

 

 

 

 

最近在做一个项目,与一个支付渠道进行连接进行充值,为了安全,每个接口访问时,都要先登陆(调用登陆接口),拿到一个sessionKey,后续业务接口内容用它来进行3DES加密处理。而登陆需要用到RSA进行签名加密处理。大概就是这样一个业务流程。

 

一、密钥生成及管理:
  1、交互双方各生成一对密钥:私钥和公钥;
  2、自己保留私钥,把公钥给到对方;
  3、用自己的私钥进行签名,对方的公钥进行验签;
  4、用对方的公钥进行加密,自己的私钥进行解密;

二、需要用到的密钥证书:
  1、对方公钥
  2、本方公钥
  3、本方私钥

三、用户登陆
  请求:
  1、用【对方公钥】对明文数据进行【RSA加密】,結果進行Base64String          ——> InputData
  2、用【本方私钥】对明文数据MD5後进行【RSA签名】,結果進行Base64String         ——> InputData_Sign
  3、取【本方公钥】证书流,結果進行Base64.encode()                   ——> CerData
  4、用【本方私钥】对前置公钥内容MD5後进行【RSA签名】,結果進行Base64String    ——> CerData_Sign
  响应:
  1、用【本方私钥】对SessionKey进行【RSA解密】                   ——> SessionKey
  2、用【对方公钥】对解密后的SessionKey进行【RSA验签】               ——> SessionKey_Sign

四、业务处理
  请求:
  1、用【SessionKey】对明文数据进行【3DES加密】                    ——> InputData
  2、用【本方私钥】对明文数据MD5後进行【RSA签名】                  ——> InputData_Sign
  响应:
  1、用【SessionKey】对返回数据进行【3DES解密】                    ——> OutputData
  2、用【本方公钥】对解密后的数据进行【RSA验签】                   ——> OutputData_Sign

 

posted on 2019-05-31 15:28  曹伟雄  阅读(528)  评论(0编辑  收藏  举报

导航