# 签名验证

# 签名算法

部分服务端接口需要使用 session_key 进行用户身份校验,为了保持 session_key 私密性,接口不明文传输 session_key,而是通过校验登录态签名 signature 完成。

登录态签名的生成方式可表示为:signature = hmac_sha256(session_key, rawData),其中 rawData 为开发者在请求服务端接口时携带的参数(Request Body)。

# 数据加解密

对于敏感数据,小游戏会对数据进行加密,开发者需要在服务端进行解密。

# 解密算法

  • 对称解密使用的算法为 AES-128-CBC,数据采用 PKCS#7 填充。
  • 对称解密的目标密文为 Base64_Decode(encryptedData)。
  • 对称解密秘钥 aeskey = Base64_Decode(session_key), aeskey 是 16 字节。
  • 对称解密算法初始向量为 Base64_Decode(iv),其中 iv 由数据接口返回。

# 解密步骤

  1. 对 encryptedData 进行 Base64 解码,得到密文数据
  2. 对 iv 进行 Base64 解码,得到初始向量
  3. 对 session_key 进行 Base64 解码,得到 AES 密钥
  4. 使用 AES-128-CBC 模式和 PKCS#7 填充方式,以及上述密钥和初始向量对密文进行解密
  5. 解析解密后的 JSON 数据