生成signature参数的步骤

qq_21859561 2017-01-02 12:08:21

// 1、初始化appid、appsecret、timestamp、nonce
$appid = 10000;
$appsecret = md5('10000ju_zhong_secret');
$timestamp = time();
$nonce = rand(10000,99999);

// 2、对所有请求参数进行自定义排序
$params = array('id' => 1314, 'msg' => 'happy', 'zval' => 'php');
$keys = array_keys($params);
rsort($keys, SORT_STRING); // 参数名按照字典序降序
sort($params, SORT_STRING); // 参数值按照字典序升序
$hex = '';
foreach ($keys as $k => $v) {
$hex .= $v . $params[$k]; // 把参数名和参数值连接起来(参数名1参数值1参数名2参数值2...)
}

// 3、把参数列表连接上时间戳、随机数、appsecret,
// 再进行bin2hex(sha1(..))加密,生成signature的一段子字符串
$hex .= $timestamp . $nonce . $appsecret;
$hex = bin2hex(sha1($hex));

// 4、signature的子字符串再连接上时间戳、随机数、appid,
// 再strrev(..)生成signature参数
$signature = $hex . $timestamp . $nonce . $appid;
$signature = strrev($signature);

// 5、 signature参数需要作为get请求的参数传递
// 例子:aticles.php/signature/xxxxxxx

// 6、 接口中,验证签名参数的代码如下:
/**
$ApiValidator = new ApiValidator();
if (! $ApiValidator->checkSignature()) {
// 签名参数验证失败,

}
**/


...全文
851 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
傲雪星枫 2017-01-02
  • 打赏
  • 举报
回复
分享帖?

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧