博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php二维数据签名验证,sing 签名验证
阅读量:5251 次
发布时间:2019-06-14

本文共 1074 字,大约阅读时间需要 3 分钟。

签名算法如下:对所有请求参数进行字典升序排列;

2. 将以上排序后的参数表进行字符串连接,如key1value1key2value2key3value3...keyNvalueN;

3. app secret作为后缀,对该字符串进行SHA-1计算,并转换成16进制编码;

4. 转换为全大写形式后即获得签名串

生成签名代码:

$serverstr = "";

foreach ($serverArray as $k => $v) {

$serverstr.= $k.$v;

}

$reserverstr=$serverstr.$serverSecret;

$reserverSign = strtoupper(sha1($reserverstr));    // sha1  md5

if($clientSign!=$reserverSign){

die('非法请求');

}else{

//    your code continue;

}

2.hmac_md5 生成签名 可逆向校验

function HmacMd5($data=array()) {

$secret_key = 'lidianzjm666';

/*两种方式调用*/

if (!$data) {

$data = $this->request->post();

}

/*将数组转为字符串*/

$data = implode('&',$data);

$key = iconv("GB2312","UTF-8",$secret_key);

$data = iconv("GB2312","UTF-8",$data);

$b = 64;

if (strlen($key) > $b) {

$key = pack("H*",md5($key));

}

$key = str_pad($key, $b, chr(0x00));

$ipad = str_pad('', $b, chr(0x36));

$opad = str_pad('', $b, chr(0x5c));

$k_ipad = $key ^ $ipad ;

$k_opad = $key ^ $opad;

$sign['sign'] = md5($k_opad . pack("H*",md5($k_ipad . $data)));

return json_encode(array('code' => 1000, 'msg' => 'success', 'data' =>$sign),JSON_UNESCAPED_UNICODE);

}

转载地址:http://wzoav.baihongyu.com/

你可能感兴趣的文章
现代程序设计 作业1
查看>>
在android开发中添加外挂字体
查看>>
Zerver是一个C#开发的Nginx+PHP+Mysql+memcached+redis绿色集成开发环境
查看>>
多线程实现资源共享的问题学习与总结
查看>>
Learning-Python【26】:反射及内置方法
查看>>
torch教程[1]用numpy实现三层全连接神经网络
查看>>
java实现哈弗曼树
查看>>
转:Web 测试的创作与调试技术
查看>>
python学习笔记3-列表
查看>>
程序的静态链接,动态链接和装载 (补充)
查看>>
关于本博客说明
查看>>
线程androidAndroid ConditionVariable的用法
查看>>
stap-prep 需要安装那些内核符号
查看>>
转载:ASP.NET Core 在 JSON 文件中配置依赖注入
查看>>
socket初识
查看>>
磁盘测试工具
查看>>
代码变量、函数命名神奇网站
查看>>
redis cli命令
查看>>
Problem B: 占点游戏
查看>>
python常用模块之sys, os, random
查看>>