校验码

校验码 V3

  • 校验码 V3版主要更新点
    1 在Header头中增加协商秘钥的key,旨在解决在线更换秘钥的问题
    2 校验码计算规则改成body体中所有数据加上秘钥进行MD5Hash
  1. platform-auth-version:固定写死 v3
  2. platform-auth-timestamp:服务器时间戳,毫秒数
  3. platform-auth-key-id:秘钥keyId,第三方平台由GSC平台统一进行分配,线上游戏产品接入使用productId+localeId,如2000003401;注意:校秘钥keyId和秘钥是一一对应,秘钥keyIdheader中传递,秘钥需要配置在游戏服务端,用来进行校验码计算,秘钥keyId和秘钥需要找技术支持人员获取
  4. platform-auth-checksum:请求数据计算后的校验码
  • 校验码原理及作用
    校验码即 checkSum 是为了防止双方通信过程中交换的数据被篡改的一种通用校验方式。 由交换数据双方按照某种规则组装生成请求明文数据, 然后追加上当前时间戳和双方协商好的秘钥[需要线下获取] ,生成校验码明文, 再通过对明文进行散列值计算获取到数据指纹即校验码, 请求方把时间戳、校验码版本号、秘钥ID以及校验码放到Header头中发送给服务方,服务方获取后再次按照相同进行计算数据指纹, 通过比较自己生成和请求方传递过来得数据指纹是否一致来确定数据是否合法。
  • 校验码明文
    本次请求body体中的数据
  • 散列值计算
    校验码散列值算法:MD5, 注意取32位md5,并转小写。
  • 示例
    请求body中的json如下
  1. {"yyyymm":"202008","localeId":"01"}

假设平台分配的秘钥key-id(秘钥ID)为2000003401, 当前的毫秒时间戳为:1600422195516, key(秘钥)为:eea2e42511c3294d47b4d2deaf4ea33c
组装后的校验码明文串如下(注意原始数据和时间戳以及密码key之间通过&符号连接):

  1. {"yyyymm":"202008","localeId":"01"}&1600422195516&eea2e42511c3294d47b4d2deaf4ea33c

生成校验码如下

  1. be6f17515783ae719710fd195461f377

注意:此时该请求的header头的四个校验码相关的header值如下

  1. platform-auth-version:v3
  2. platform-auth-timestamp:1600422195516
  3. platform-auth-key-id:2000003401
  4. platform-auth-checksum:be6f17515783ae719710fd195461f377