通常情况下,这种很长一段数字字母的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相关推荐

  1. 如何生成一个好的appkey和appsecret

    参考:https://blog.csdn.net/qq_35342627/article/details/99072520 通常情况下,这种很长一段数字字母的key和secret都是通过md5和sha ...

  2. js插件---在线类似excel生成图表插件解决方案

    js插件---在线类似excel生成图表插件解决方案 参考文章: (1)js插件---在线类似excel生成图表插件解决方案 (2)https://www.cnblogs.com/Renyi-Fan/ ...

  3. vb.net开发vbe插件,在vbe界面生成类似任务窗格的窗体

    要在 VB.NET 中开发 VBE 插件并生成类似任务窗格的窗体,您需要做以下几件事: 安装 Microsoft Visual Studio 开发环境. 新建一个 VB.NET 项目,选择模板为 &q ...

  4. php hashids 数字(正整数)加密字条串方法(用于从数字生成类似 YouTube 的 id。不想向用户公开数据库数字 ID 时使用它)

    用于从数字(正整数)生成类似 YouTube 的 id.当您不想向用户公开数据库数字 ID 时使用它 官网: https://hashids.org/php/ https://github.com/v ...

  5. 新浪短网址生成java_如何生成t.cn的短链接?新浪短网址怎么生成的?

    t.cn短链接.新浪短网址是什么? 短网址顾名思义就是一个很短的链接和网址,常用于将一个长连接缩短成一个短链接,方便利于推广.  t.cn短网址,可能很多朋友都已经不再陌生,特别是在微博.微信.朋友圈 ...

  6. IEDA中JavaDoc的自动生成、手动生成,以及生成html文档

    1 自动生成类的注释 JavaDoc就是java特有的一种注释. 1.1 配置 首先,IDEA点击File-->Settings 然后Editor-->File and Code Temp ...

  7. ArcGIS如何利用已有坐标转成点(arcgis生成、python生成)

    文章目录 前言 一.经纬度坐标转点.线.面 (一)在excel对数据进行初始处理 (二)在ArcGIS中对数据进行生成 1.生成点 2.生成线 3.生成面 二.利用坐标点直接转换为点.线.面 (一)把 ...

  8. java 清单文件 生成,使用批处理文件生成文件列表清单

    使用批处理文件生成文件列表清单 使用批处理文件生成文件列表清单,友友们都会遇到这样的情况:想要复制一个文件夹下所有文件的名字,或者将所有文件的名字列出一个清单,用手工复制的话吃力不讨好还容易出差错. ...

  9. 代码文档生成工具-Doxygen生成CHM和RTF图文教程

    Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,可以从一套归档源文件开始,生成chm格式的文档.本文主要讲解如何在winddows下安装doxygen. 1.下载doxyge ...

最新文章

  1. 画笔Paint的使用
  2. 数学,对人工智能开发者意味着什么
  3. 你有哪些deep learning(rnn、cnn)调参的经验
  4. how is SAP UI5 extension component being loaded in the runtime
  5. 拉美光伏新兴市场热潮将至
  6. 给 EF Core 查询增加 With NoLock
  7. python自带sqlite库_Python标准库之sqlite3使用实例
  8. ajax 同步_第3部分-0:同步和异步,还有回调需要了解一下
  9. 进程间传递文件描述符--sendmsg,recvmsg(可用)
  10. poj 1062 昂贵的聘礼 最短路
  11. preempt_count
  12. 你连Nginx怎么转发给你请求都说不清楚,还好意思说自己不是CRUD工程师?
  13. 【随笔】移动端input type|语义与IOS按键
  14. 【数据库】数据库期末考试复习试题与答案
  15. 不可重复读和幻读有什么区别?
  16. Error response from daemon: Get https://192.168.x.x/v2/: x509: cannot validate certificate for
  17. html5复选框控制按钮状态,HTML input checkbox复选按钮简介说明
  18. python小游戏代码 py_教自己学Python(三)练手小游戏:不
  19. 计算机网络的硬件主要有,什么是计算机网络及主要功能有哪些?
  20. [原创] photoshop cs3视频教程全程高清版

热门文章

  1. 高中单元测试软件,高中信息技术学业水平单元测试:算法与程序设计练习(三).doc...
  2. bookstrap表单的用法
  3. java开发程序员辛苦吗,震撼来袭免费下载!
  4. linux 安装 wxwidgets,wxWidgets笔记_1_linux环境下wxwidgets的安装与配置
  5. 【Vue】模板语法 —— 表达式、插值、指令
  6. MacType - 美化 Windows 字体的神器!(让字体渲染显示效果比苹果电脑更清晰炫丽)
  7. 八一学院期末考试答案专科计算机,(2018春电大)国家开放大学学习指南形考作业参考答案...
  8. android view.gone 动画,Android 模仿iPhone列表数据View刷新动画详解
  9. c语言item需要什么头文件,==把VIM打造成开发C的IDE==
  10. 帝国站长php主动推送,帝国CMS实现百度主动推送功能代码与详尽操作教程