Easyloon-api
    Easyloon-api
    • 1. 概述
    • 2. 通讯协议
    • 3 交易接口规范
    • 4 加密及签名规范
    • 5 业务接口
    • 6. 附录

    4 加密及签名规范

    4.1 原则#

    1.
    交易报文传输都需要进行加密、签名和校验。
    2.
    无论是请求端还是响应端接收到报文后,都需要进行签名验证,即按照约定算法重新生成签名,然后和收到的签名进 行对比,对比通过后才能进行报文内容的解析,否则报文或文件内容可能出现篡改、部分丢失、伪造的问题。
    3.
    报文加密算法:DES/CBC/PKCS5Padding
    4.
    会话密钥生成:KeyGenerator生成
    5.
    会话密钥加密算法:RSA/ECB/PKCS1Padding
    6.
    签名算法:SHA1withRSA

    4.2 RSA密钥对获得#

    对于商户来说,需要生成商户自己的RSA密钥对(包含公钥和私钥),其中,私钥合作方自己保留,同时公钥提供给Easyloon。
    对于Easyloon来说,需要为每个商户生成对应的公私钥对。其中,私钥Easyloon自己保留,公钥需要提供给商户。
    openssl genrsa –out rsa_private_key_2048.pem2048
    #生成rsa私钥,以X509编码,指定生成的密钥的位数:2048
    openssl pkcs8 –topk8 –in rsa_private_key_2048.pem –out pkcs8_rsa_private_key_2048.pem –nocrypt
    #将上一步生成的rsa私钥转换成PKCS#8编码
    openssl rsa –in rsa_private_key_2048.pem –out rsa_public_key_2048.pem –pubout
    #导出rsa公钥,以X509编码商户需要按上面步骤生成商户的公钥pem发给Easyloon,
    #或商户直接可以向Easyloon索要密钥对的生成脚本,生成商户所需的公私钥。
    #Easyloon也需要把Easyloon生成的对应的公钥pem发给商户。

    4.3 报文加密及签名#

    sign-49c683bf.png
    1.
    对请求或响应Json报文明文(UTF-8编码. 使用发送方的私钥进行签名(SHA1withRSA. ,并将签名结果转换为HEX字符串,得到sign域。
    2.
    使用KeyGenerator生成器,生成DES加密会话密钥SK;
    3.
    使用SK对Json明文进行加密(DES/CBC/PKCS5Padding. ,并将加密结果转换为HEX字符串,得到jsonEnc 域。
    4.
    使用接收方公钥对会话密钥SK加密(RSA/ECB/PKCS1Padding. ,并将结果转换为HEX字符串,得到keyEnc 域。

    4.4 报文解密及验签#

    checkSign-988cda81.png
    1.
    将keyEnc域转换为二进制byte数组,使用接收方放的私钥对会话密钥,得到明文SK;
    2.
    将jsonEnc与转换为二进制byte数组,使用上一步得到的会话密钥SK解密,得到明文json;
    3.
    使用上一步解密得到的明文、发送方公钥和sign域数据验证签名的有效性。

    4.5 accessToken 使用说明#

    1.
    以 FX 询价接口为例,在 head 内增加参数 accessToken,即代表当前用户主体发起操作。 Sample:
    {
      "head": {
        "accessToken": "7c4a8d09ca3762af61e59520943dc26494",
        "version": "1.0.0",
        "tradeType": "00",
        "tradeTime": "1551341750",
        "tradeCode": "TP1002",
        "language": "cn"
      },
      "body": {
        "sellCurrency": "USD",
        "buyCurrency": "CNY",
        "rate": "7.0102",
        "sellAmount": "1000.00",
        "buyAmount": "7010.20",
        "quoteId": "7843892398239",
        "expireTime": "1576560599598",
        "merOrderNo": "32894398349"
      }
    }
    修改于 2025-03-07 03:35:44
    上一页
    3 交易接口规范
    下一页
    5 业务接口
    Built with