首页 文档中心

签名机制

签名机制概述

为保证您与 LINK 之间消息来往的安全性,防止支付或者通知的数据被伪造,篡改,LINK 要求对所有来往的信息加入签名机制。LINK 目前采用的是 RSA 加密方式中的 md5withRSA 算法实现的签名机制。

RSA 签名算法

是一种非对称的签名算法,即签名密钥(私钥)与验签密钥(公钥)是不一样的,私钥用于签名,公钥用于验签。 其原理如下:

排列组合是指的生成签名原串的过程, 详情参考加签生成签名原串与验签生成签名原串。

校验规则: 当接收方的期待串与签名原串一致时, 校验成功;否则校验失败。

生成秘钥

生成物流商的公私钥时, 推荐使用 OpenSSL 完成。生成工具包下载地址: https://www.openssl.org/source/

生成私钥

执行命令

openssl genrsa -out rsa_private_key.pem 4096 #长度需大于1024

执行成功的预期结果如下

> openssl genrsa -out rsa_private_key.pem 4096
Generating RSA private key, 4096 bit long modulus (2 primes)
..................................................................++++
.......................................................................................................................++++
e is 65537 (0x010001)
        

在当前目录下会生成一个名为 rsa_private_key.pem 的文件, 该文件为 pkcs1 格式的私钥。

如果您的开发语言是PHP则可以直接使用该私钥, 开始下一步,生成公钥。

如果您的开发语言是 Java 或者 C# , 请在同目录下执行以下命令将私钥转变为pkcs8格式:

openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -out rsa_private_key.txt -nocrypt

执行完成后,会在当前目录下生成一个名为rsa_private_key.txt的文件,打开该文件,对文件中的私钥做去除头部、尾部、空格、换行的处理,形成最终供Java或C#使用的私钥。

生成公钥

在生成pkcs1格式私钥的目录下, 执行以下命令

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

执行成功后, 当前目录下会生成一个新的名为`rsa_public_key.pem`的文件。

去除文件中的头部、尾部及换行, 形成上传到 Link 开放平台的商户公钥。

MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtPuj44EEnzOXiZs8NMh3VEsZMQ4SaZ0WM/XXEvqBX+7Aj4owRxyBztQ/EjtfqBo8jtepZLSX0OXYt0Tvac7yDKBuo04dQTixWyCoW87+YT1VJswkFLF86pFrvGBQCIEmcIFAW4zzX/3PoFuSbsxUY+ruElhJIzAbYt0KsjNprm3qHy7VUG8uESqZ/rWJZUe4cDGcJ6VG6f9EowEQP8DTwkqcwFnmoS09rTCT8EcPADMg641cjsa0pRQS3MM3xf4ETcsN7Yj8OXn0FBS+UPog2P8RQJe1XghV0ugRsdAYv9QzFzJzGwRkyW/tvVb5m62SYY2nTmgCLhXV6ibVMMz1gmjy0MJxB1RgYY6ulX483pObopMq3pDCSXfwWst9UATei3I5vFOkmC7Z4/AMkLHQdtm2zG4V6j8B4vYbuv8i3VWx1ygK6T2/A1PR1yMrwuJ9i3khipySfhZZjY+S24yLETfdxB8PGJVX0yshJtNGMVTSGqHGb+UgQDAp9WE/UW7Z+EUIkPmMzmwM855crudNb4FGGzNnNC09JzAzDCfUz0D9bHabUD7bgEpt+G9dMnx/8IR+s5A76H/WfV57yHt49yMOBY2gxoiz6bZLxpRx+/TBM+xdtsuTfSEOZOzuKfQ/PSJtgQoDO14PyY5NtPj3Zw7I2qEz7pASz05r9RMfZVcCAwEAAQ==

交易签名

在您与 LINK 的交易中, 会使用到两对公私钥,即商户公私钥与 LINK 公私钥。

商户公私钥

用于您向 LINK 发送请求时的加签与验签。 该公私钥由您自己生成,其中,私钥用于对您发往 LINK 的数据签名,自己保存;公钥需要提交给 LINK,当 LINK 收到您发来的数据时用该公钥验证签名。

Link 公私钥

用于 LINK 向您发送通知或者响应时的加签与验签。该公私钥由 LINK 生成, 其中,LINK 私钥不提供;LINK 公钥可于**Link开放平台**->**基本配置** 自行下载。

签名内容产生规则

  • 获取请求完整 JSON 报文,使用 MD5 计算出报文摘要值(全小写);
  • 将该摘要值按照指定的签名算法使用交易发送方的签名私钥进行签名,将签名值使用Base64转码得到签名串 signature
  • 将签名方式和签名值设置在 http header 中,并自定义如下对应属性:
  • 自定义 Header key
    是否必须
    描述
    暂无数据