为什么要进行签名,我们在进行数据请求的时候,为了防止数据被人截取,造成不好的影响,所以我们在进行数据请求的时候,需要进行签名验证,进行签名的原理是:客户端和服务端使用同样的签名算法,来计算签名,当客户端提交的签名,和服务端提供的签名一致的时候,就签名成功。

这里是仿照微信验证的签名算法:需要用到 appid 和 appSecret。

具体实现:

/* 签名算法 */
public function sign(){
$appid = "dd9818820b95ec8e3d";
$appSecret = "e5178f68c37c3a24772e463deb8cc4d8";
$postData = array(
'appid'=>$appid,
'timestamp'=>'1544883104',
'nonce'=>md5(md5('dd9818820b95ec8e3d').'1544883104'),
'sign'=>'B016B5D43749E26775B260FBED08DDCA'
);
echo $this->getSignature()."<br>";
echo $this->checkSignature($postData)."<br>";
die;
}
public function checkSignature($data = null){
$appid = "dd9818820b95ec8e3d";
$appSecret = "e5178f68c37c3a24772e463deb8cc4d8";
if(!$data){return false;};
$clientSign = $data['sign'];
$array = array();
$array['appid'] = $data['appid'];
$array['timestamp'] = $data['timestamp'];
$array['nonce'] = $data['nonce'];
ksort($array);
$str = "";
foreach ($array as $k => $v) {
$str.= $k.$v;
}
$restr = $str.$appSecret;
$reserverSign = strtoupper(md5($restr));
if($clientSign == $reserverSign){
return true;
};
return false;
}
public function getSignature($array = array()){
$appid = "dd9818820b95ec8e3d";
$appSecret = "e5178f68c37c3a24772e463deb8cc4d8";
$array = array(
'appid'=>$appid,
'timestamp'=>'1544883104',
'nonce'=>md5(md5('dd9818820b95ec8e3d').'1544883104'),
);
// 1.对加密数组进行字典排序 防止因为参数顺序不一致而导致下面拼接加密不同
ksort($array);
// 2.将key和value进行拼接
$str = "";
foreach ($array as $k => $v) {
$str.= $k.$v;
}
// 3.通过sha1(或md5)加密并转化为大写
$restr = $str.$appSecret;
$sign = strtoupper(md5($restr));
return $sign;
}
public function getAppid($phone = "18314416390"){
return 'dd'.substr(md5(md5(time()).md5($phone).mt_rand(1,1000000)),0,16);
}
public function getAppSecret($phone = "18314416390"){
$key = '|Hx@IP9O]>6KFX\Z2(r[/?st1}^CNh+W4oQeDgS';
return md5(md5($key).md5($phone).md5(time()).mt_rand(1,1000000));
}

php---进行签名验证的更多相关文章

  1. WebApi安全性 使用TOKEN+签名验证

    首先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候,会面临着许多的安全性问题, ...

  2. 开放api接口签名验证

    不要急,源代码分享在最底部,先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候, ...

  3. api接口签名验证(MD5)

    不要急,源代码分享在最底部,先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候, ...

  4. 【转】开放api接口签名验证

    不要急,源代码分享在最底部,先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候, ...

  5. GPG操作——签名验证

    问题描述: 可能大家都遇到过软件在下载过程中由于网络原因导致下载的软件体积与实际软件体积不符.最常见的办法是对待下载文件附加一个摘要文件.这种做法比较常见,也比较容易实现.但是,还是会有一个问题:如果 ...

  6. Crypto库实现PKCS7签名与签名验证

    在windows中,可以直接使用微软提供的crypto库实现PKCS7签名与签名验证.签名接口函数为CryptSignMessage,其接口定义为: BOOL WINAPI CryptSignMess ...

  7. WebAPI 安全性 使用TOKEN+签名验证(上)

    首先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候,会面临着许多的安全性问题, ...

  8. TOKEN+签名验证

    TOKEN+签名验证 首先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候,会面 ...

  9. 对于百川SDK签名验证的问题

    SDK是要在wantu.taobao.com生成的.而生成这个SDK其实是要上传一个apk,而这个上传其实就是取他的签名而已.验证就是那张yw222那张图片.重点是你上传的apk的签名是不是跟你的生成 ...

  10. WebAPI 用户认证防篡改实现HMAC(二)签名验证 AbsBaseAuthenticationAttribute--转

    public class ActionFilter : ActionFilterAttribute      {          public override void OnActionExecu ...

随机推荐

  1. opengl库区分:glut、freeglut、glfw、glew、gl3w、glad

    //oepngl库 opengl原生库 gl* 随opengl一起发布 opengl实用库 glu* 随opengl一起发布 opengl实用工具库glut glut* 需要下载配置安装(太老了!) ...

  2. iis6.0 default web site 无法启动

    按照以往方式打开http://localhost/blog2/index.asp时,意外被提醒出现错误:http 404 无法找到文件.一时感觉不知所措,怎么会出现这样的问题? 近来还碰到了一个问题, ...

  3. [原]unity3d GLSL无法pc上显示

    pc编写GLSL: Shader "Custom/GLSL" {    Properties {        _MainTex ("Base (RGB)", ...

  4. php 内存分配

    php内核中的内存分配 使用的函数有 emalloc(), erealloc() ,这两个函数分别是malloc(),realloc()函数的封装 关于内存分配有四个容器:cache,小块内存链表,大 ...

  5. 【代码审计】TuziCMS_v3.0_任意文件删除漏洞分析

      0x00 环境准备 TuziCMS官网:http://www.tuzicms.com/ 网站源码版本:TuziCMS_v3.0_20161220 程序源码下载:http://www.tuzicms ...

  6. 基于github+hexo搭建个人博客(window)

    0x01 环境搭建 1.Node.js环境 下载Node.js安装文件:https://nodejs.org/en/download/ 根据系统选择相应安装包下载,安装过程一路Next,默认设置即可. ...

  7. 不作死就不会死,微软强行插入NO-IP

    微软啊微软,你这是何苦来着. 事情经过大致是这样的,微软向美国法院提出起诉No-IP名下22个常用的子域名被恶意软件的作者滥用,要求法官裁定由微软接管No-IP名下的这22个子域名,以便其可以过滤恶意 ...

  8. MQ java 基础编程(一)

    本文转自:http://www.blogjava.net/i369/articles/88035.html 编写人:邬文俊 编写时间 : 2006-2-16 联系邮件 : wenjunwu430@gm ...

  9. 天猫浏览型应用的CDN静态化架构演变(转)

    转自:http://wbj0110.iteye.com/blog/2036613 在天猫双11活动中,商品详情.店铺等浏览型系统,通常会承受超出日常数倍甚至数十倍的流量冲击.随着历年来双11流量的大幅 ...

  10. apk反编译看包名什么的

    首先默认你是装了java环境的 到google code里面下载apktool1.5.2.tar.bz2和apktool-install-windows-r05-ibot.tar.bz2(地址:htt ...