5.4.6.1 应用接入签名算法

  链下业务系统向城市节点网关发送交易请求时,需使用应用接入密钥对中的私钥对交易请求报文进行数字签名,节点网关接收到交易请求报文后,使用已上传或托管的密钥对中的公钥对该报文进行验签。只有在交易报文验签通过时,网关才会对交易请求报文进行后续的交易处理。具体签名算法如下:

  1. 组装签名字符串
  将请求参数按照文档参数表格中的顺序转换为字符串进行拼接,其中请求参数优先拼接Header中的UserCode、AppCode;返回参数优先拼接code、msg,然后再次按照文档参数顺序拼接Body中的参数。

  2. 不同类型的转换格式

类型 规则 示例 结果
String 不转换 abc abc
Int/int64/long 十进制转换 -12 -12
Float 十进制转换,小数位参考备注 1.23 1.23
Bool 转换为“true”或者“false” true true
Array 按照参数顺序和类型拼接 [“abc”,”xyz”] abcxyz
Map[key]value 按照顺序拼接key和value {“a”:1,”b”:2} a1b2
Object 将对象内的属性按照文档循序依据上述格式转换 {“name”:”abc”,”secret”:”123456”} abc123456

  3. 签名规则

  a) 针对使用国密算法的CITA框架应用,使用以下规则

  • 哈希值计算:将按照上述规则转换后的待签名的字符串按照UTF-8编码做SM3计算;

  • 对哈希值获取签名:哈希值与私钥进行SM2加密签名计算;

  • 将签名结果做Base64计算。

  4. 示例

  参数:

    {"header":{"userCode":"user01","appCode":"app01"},
    "mac":"",
    "body":{“userId”:”abc”,”list”:[“abc”,”xyz”]}}

  结果:user01app01abcabcxyz

Copyright 北京红枣科技有限公司

results matching ""

    No results matching ""

    results matching ""

      No results matching ""