第三方平台消息加解密

开发者在代替授权小程序接收和处理消息时,出于安全考虑,必须对消息收发的过程进行必须的加解密

第三方平台目前会接收到字节服务器推送的以下类型的消息:

  • Ticket;
  • 代码审核结果;
  • 名称、图标、简介、服务类目等基本信息的审核结果;
  • 短视频挂载、抖音直播组件、获取用户手机号等运营能力的审核结果;

这种系统事件推送通知,第三方开发者收到后需要解密后才能查看具体信息,并且接收到后需直接返回字符串success(注意:不是"success")。

具体消息解密的步骤如下:

1、验证消息签名

目的是保证消息是来自于字节第三方平台服务器。

消息格式为:

{
  "Nonce": "4464221",
  "TimeStamp": "1535551395",
  "Encrypt": "Encrypt xxxx",
  "MsgSignature": "ba394c04acece6c2c0edee058c5dddf82474b8ee"
}

Nonce 为随机数,TimeStamp 时间戳,Encrypt 加密消息体,MsgSignature 为消息签名

可以使用 VerifyByteDanceServerUtil 类的 verify 方法。根据消息验证 TOKEN、Nonce、TimeStamp、Encrypt 获取签名,和比较 MsgSignature 比较,如果相同则证明来源于字节第三方平台服务器。

提供了 java,php,go 种语言的示例代码(点击下载,请运行示例代码前先阅读 readme 文件),每种语言的类名和接口名均一致。

2、解密消息

Encrypt 字段为加密消息体,可以使用 AesDecryptUtil 类的 decrypt 方法进行解密。

提供了 java,php,go 种语言的示例代码(点击下载,请运行示例代码前先阅读 readme 文件),每种语言的类名和接口名均一致。

注意:

  • AESKey 长度固定为 43 个字符,从 a-z,A-Z,0-9 共 62 个字符中选取。
  • 出于安全考虑,第三方开放平台提供了修改消息加解密 Key 的功能。
  • 字节第三方平台服务器发送给第三方服务的事件推送必须直接返回字符串 success,否则会进行多次重试(重试 3 次)。
点击纠错
评价此篇文档