logo
当前页

检验说明


为提高数据安全性,开发者在收到 ZEGO 服务端发出的回调时,进行本地签名计算,并与 signature 进行对比,判断该请求是否合法。

1 加密/校验

加密/校验的使用流程如下:

参数说明如下:

参数说明
callbacksecret服务端校验密钥。在 ZEGO 控制台 注册项目时生成,可在 “控制台 > 项目配置 > 项目信息 > 配置信息” 中查看。
timestampUnix 时间戳。
nonce随机数。

2 示例代码

以下示例代码用于生成和检验 signature。

  • PHP 示例
Untitled
// 从请求参数中获取到 signature, timestamp, nonce
$signature = $_POST["signature"];
$timestamp = $_POST["timestamp"];
$nonce = $_POST["nonce"];

$secret = callbacksecret;// 后台获取的 callbacksecret
$tmpArr = array($secret, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){
    return true;
} else {
    return false;
}
1
Copied!
  • Java 示例
Untitled
// 从请求参数中获取到 signature, timestamp, nonce
String signature = request.getParameter("signature");
long timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");

// 后台获取的 callbacksecret
String secret = callbacksecret;

String[] tempArr = {secret, ""+timestamp, nonce};
Arrays.sort(tempArr);
        
String tmpStr = "";
for (int i = 0; i < tempArr.length; i++) {
    tmpStr += tempArr[i];
}
tmpStr = org.apache.commons.codec.digest.DigestUtils.sha1Hex(tmpStr);

return tmpStr.equals(signature);
1
Copied!

3 输出示例

Untitled
$nonce = 123412;
$timestamp = 1470820198;
$secret = 'secret';
// 三个参数经过排序后的顺序为:nonce、timestamp、secret
// 排序拼接后需要加密的原始串为:1234121470820198secret
// 加密的结果为:5bd59fd62953a8059fb7eaba95720f66d19e4517
1
Copied!

Previous

消息发送后

Next

全局返回码