验签

MD5 验签

按 生成MD5签名的方式,对响应数据进行MD5计算,然后将计算结果与响应中的 sign 进行比较,一致代表数据未被篡改,可以信任,否则忽略

MD5 验签示例

function verifyMD5(response) {
  const data = Object.keys(response)
    .sort()
    .reduce((obj, key) => {
      obj[key] = response[key]
      return obj
    }, {})
  var str = ''
  Object.keys(data).forEach((key) => {
    if (data[key] != '' && key != 'sign') {
      str = str + key + '=' + data[key] + '&'
    }
  })
  str = str + 'pkey=' + YOUR_MD5_SECRET_KEY
  return md5(str) == response['sign']
}

RSA 验签签名

RSA验证签名需要按 RSA签名生成规则 对 response 生成 URL key-value 格式的字符串, 然后使用 UseePay RSA 公钥进行签名验证

function verifyRSA(response) {
  const data = Object.keys(response)
    .sort()
    .reduce((obj, key) => {
      obj[key] = response[key]
      return obj
    }, {})
  var str = ''
  Object.keys(data).forEach((key) => {
    if (data[key] != '' && key != 'sign') {
      str = str + key + '=' + data[key] + '&'
    }
  })
  var result = new NodeRSA(USEEPAY_RSA_PUBLICK_KEY, 'pkcs8-public').verify(
    Buffer.from(str),
    response['sign'],
    'base64',
    'base64',
  )
  return result
}

Last updated