php生成类似appkey,生成appkey和appSecret
通常情况下,这种很长一段数字字母的key和secret都是通过md5和sha1加密算法来生成的
appkey的生成
appkey生成比较简单,一般是客户的唯一值+字符串组成,方法很多,做到唯一性的字符串就可以。比如使用用户的uid+”abc”字符串组成。
appSecret生成方法
其原始数据有可能是你的账号的id,还有注册时间之类的唯一值进行组合再通过md5和sha1来生成,而md5和sha1对比的话,md5比sha1更快,但sha1比md5强度更高,所以在此类授权应用里,通常都使用sha1算法,例如oauth的签名算法
验证授权
例如要和微信通信里,要传递三个参数ABC,则需要将ABC与appsecret一起sha1一遍,得到一个签名串,然后将这个签名串与appkey一起传递给微信,
此时,微信会通过appkey去查找对应的appsecret,然后再将ABC参数与查询出来的appsecret做一遍相同的签名算法,如果得到的签名串一致,则认为是授权成功
如下的代码可以参考:
public function test(){
if(!isset($_GET['token'])){
$this->apiReturn(4001,'invalid token');
}else if(!S($_GET['token'])){
$this->apiReturn(4001,'invalid token');
}
$data = array(
'id'=>2,
'username'=>'明之暗夜',
'info'=>array('age'=>24,'address'=>'学府路','url'=>'http://cnblogs.com/dmm888'));
if($data){
$this->apiReturn(200,'读取用户信息成功',$data,xml);
}
}
public function getToken(){
$ori_str = S($this->appid.'_'.$this->appsecret);
//这里appid和appsecret我写固定了,实际是通过客户端获取 所以这里我们可以做很多 比如判断appid和appsecret有效性等
if($ori_str){//重新获取就把以前的token删除
S($ori_str,null);
}
//这里是token产生的机制 您也可以自己定义
$nonce = $this->createNoncestr(32);
$tmpArr = array($nonce,$this->appid,$this->appsecret);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
// echo $tmpStr;
//这里做了缓存 'a'=>b 和'b'=>a格式的缓存
S($this->appid.'_'.$this->appsecret,$tmpStr,7200);
S($tmpStr,$this->appid.'_'.$this->appsecret,7200);
}
/**
* 作用:产生随机字符串,不长于32位
*/
function createNoncestr( $length = 32 )
{
$chars = "abcdefghijklmnopqrstuvwxyz0123456789"; $str ="";
for ( $i = 0; $i < $length; $i++ ) {
$str.= substr($chars, mt_rand(0, strlen($chars)-1), 1);
}
return $str;
}
php生成类似appkey,生成appkey和appSecret相关推荐
- 如何生成一个好的appkey和appsecret
参考:https://blog.csdn.net/qq_35342627/article/details/99072520 通常情况下,这种很长一段数字字母的key和secret都是通过md5和sha ...
- js插件---在线类似excel生成图表插件解决方案
js插件---在线类似excel生成图表插件解决方案 参考文章: (1)js插件---在线类似excel生成图表插件解决方案 (2)https://www.cnblogs.com/Renyi-Fan/ ...
- vb.net开发vbe插件,在vbe界面生成类似任务窗格的窗体
要在 VB.NET 中开发 VBE 插件并生成类似任务窗格的窗体,您需要做以下几件事: 安装 Microsoft Visual Studio 开发环境. 新建一个 VB.NET 项目,选择模板为 &q ...
- php hashids 数字(正整数)加密字条串方法(用于从数字生成类似 YouTube 的 id。不想向用户公开数据库数字 ID 时使用它)
用于从数字(正整数)生成类似 YouTube 的 id.当您不想向用户公开数据库数字 ID 时使用它 官网: https://hashids.org/php/ https://github.com/v ...
- 新浪短网址生成java_如何生成t.cn的短链接?新浪短网址怎么生成的?
t.cn短链接.新浪短网址是什么? 短网址顾名思义就是一个很短的链接和网址,常用于将一个长连接缩短成一个短链接,方便利于推广. t.cn短网址,可能很多朋友都已经不再陌生,特别是在微博.微信.朋友圈 ...
- IEDA中JavaDoc的自动生成、手动生成,以及生成html文档
1 自动生成类的注释 JavaDoc就是java特有的一种注释. 1.1 配置 首先,IDEA点击File-->Settings 然后Editor-->File and Code Temp ...
- ArcGIS如何利用已有坐标转成点(arcgis生成、python生成)
文章目录 前言 一.经纬度坐标转点.线.面 (一)在excel对数据进行初始处理 (二)在ArcGIS中对数据进行生成 1.生成点 2.生成线 3.生成面 二.利用坐标点直接转换为点.线.面 (一)把 ...
- java 清单文件 生成,使用批处理文件生成文件列表清单
使用批处理文件生成文件列表清单 使用批处理文件生成文件列表清单,友友们都会遇到这样的情况:想要复制一个文件夹下所有文件的名字,或者将所有文件的名字列出一个清单,用手工复制的话吃力不讨好还容易出差错. ...
- 代码文档生成工具-Doxygen生成CHM和RTF图文教程
Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,可以从一套归档源文件开始,生成chm格式的文档.本文主要讲解如何在winddows下安装doxygen. 1.下载doxyge ...
最新文章
- 画笔Paint的使用
- 数学,对人工智能开发者意味着什么
- 你有哪些deep learning(rnn、cnn)调参的经验
- how is SAP UI5 extension component being loaded in the runtime
- 拉美光伏新兴市场热潮将至
- 给 EF Core 查询增加 With NoLock
- python自带sqlite库_Python标准库之sqlite3使用实例
- ajax 同步_第3部分-0:同步和异步,还有回调需要了解一下
- 进程间传递文件描述符--sendmsg,recvmsg(可用)
- poj 1062 昂贵的聘礼 最短路
- preempt_count
- 你连Nginx怎么转发给你请求都说不清楚,还好意思说自己不是CRUD工程师?
- 【随笔】移动端input type|语义与IOS按键
- 【数据库】数据库期末考试复习试题与答案
- 不可重复读和幻读有什么区别?
- Error response from daemon: Get https://192.168.x.x/v2/: x509: cannot validate certificate for
- html5复选框控制按钮状态,HTML input checkbox复选按钮简介说明
- python小游戏代码 py_教自己学Python(三)练手小游戏:不
- 计算机网络的硬件主要有,什么是计算机网络及主要功能有哪些?
- [原创] photoshop cs3视频教程全程高清版
热门文章
- 高中单元测试软件,高中信息技术学业水平单元测试:算法与程序设计练习(三).doc...
- bookstrap表单的用法
- java开发程序员辛苦吗,震撼来袭免费下载!
- linux 安装 wxwidgets,wxWidgets笔记_1_linux环境下wxwidgets的安装与配置
- 【Vue】模板语法 —— 表达式、插值、指令
- MacType - 美化 Windows 字体的神器!(让字体渲染显示效果比苹果电脑更清晰炫丽)
- 八一学院期末考试答案专科计算机,(2018春电大)国家开放大学学习指南形考作业参考答案...
- android view.gone 动画,Android 模仿iPhone列表数据View刷新动画详解
- c语言item需要什么头文件,==把VIM打造成开发C的IDE==
- 帝国站长php主动推送,帝国CMS实现百度主动推送功能代码与详尽操作教程