电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

PHP開發API接口簽名生成及驗證操作示例

瀏覽:93日期:2022-09-10 10:50:59

本文實例講述了PHP開發API接口簽名生成及驗證操作。分享給大家供大家參考,具體如下:

開發過程中,我們經常會與接口打交道,有的時候是調取別人網站的接口,有的時候是為他人提供自己網站的接口,但是在這調取的過程中都離不開簽名驗證。

我們在設計簽名驗證的時候,請注意要滿足以下幾點:

可變性:每次的簽名必須是不一樣的。 時效性:每次請求的時效,過期作廢等。 唯一性:每次的簽名是唯一的。 完整性:能夠對傳入數據進行驗證,防止篡改。

一、簽名參數sign生成的方法

第1步: 將所有參數(注意是所有參數),除去sign本身,以及值是空的參數,按參數名字母升序排序。

第2步: 然后把排序后的參數按參數1值1參數2值2…參數n值n(這里的參數和值必須是傳輸參數的原始值,不能是經過處理的,如不能將"轉成”后再拼接)的方式拼接成一個字符串。

第3步: 把分配給接入方的驗證密鑰key拼接在第2步得到的字符串前面。

第2步: 在上一步得到的字符串前面加上驗證密鑰key(這里的密鑰key是接口提供方分配給接口接入方的),然后計算md5值,得到32位字符串,然后轉成大寫.

第4步: 計算第3步字符串的md5值(32位),然后轉成大寫,得到的字符串作為sign的值。

舉例:

假設傳輸的數據是/interface.php?sign=sign_value&p2=v2& p1=v1&method=cancel&p3=&pn=vn(實際情況最好是通過post方式發送),其中sign參數對應的sign_value就是簽名的值。

第一步,拼接字符串,首先去除sign參數本身,然后去除值是空的參數p3,剩下p2=v2&p1=v1&method=cancel& amp;pn=vn,然后按參數名字符升序排序,method=cancel&p1=v1&p2=v2&pn=vn.

第二步,然后做參數名和值的拼接,最后得到methodcancelp1v1p2v2pnvn

第三步,在上面拼接得到的字符串前加上驗證密鑰key,我們假設是abc,得到新的字符串abcmethodcancelp1v1p2v2pnvn

第四步,然后將這個字符串進行md5計算,假設得到的是abcdef,然后轉為大寫,得到ABCDEF這個值即為sign簽名值。

注意,計算md5之前請確保接口與接入方的字符串編碼一致,如統一使用utf-8編碼或者GBK編碼,如果編碼方式不一致則計算出來的簽名會校驗失敗。

二、簽名驗證方法:

根據前面描述的簽名參數sign生成的方法規則,計算得到參數的簽名值,和參數中通知過來的sign對應的參數值進行對比,如果是一致的,那么就校驗通過,如果不一致,說明參數被修改過。

三、下面直接看代碼

<?php// 設置一個公鑰(key)和私鑰(secret),公鑰用于區分用戶,私鑰加密數據,不能公開$key = 'c4ca4238a0b923820dcc509a6f75849b';$secret = '28c8edde3d61a0411511d3b1866f0636';// 待發送的數據包$data = array( ’username’ => ’abc@qq.com’, ’sex’ => ’1’, ’age’ => ’16’, ’addr’ => ’guangzhou’, ’key’ => $key, ’timestamp’ => time(),);// 獲取signfunction getSign($secret, $data) { // 對數組的值按key排序 ksort($data); // 生成url的形式 $params = http_build_query($data); // 生成sign $sign = md5($params . $secret); return $sign;}// 發送的數據加上sign$data[’sign’] = getSign($secret, $data);/** * 后臺驗證sign是否合法 * @param [type] $secret [description] * @param [type] $data [description] * @return [type] [description] */function verifySign($secret, $data) { // 驗證參數中是否有簽名 if (!isset($data[’sign’]) || !$data[’sign’]) { echo ’發送的數據簽名不存在’; die(); } if (!isset($data[’timestamp’]) || !$data[’timestamp’]) { echo ’發送的數據參數不合法’; die(); } // 驗證請求, 10分鐘失效 if (time() - $data[’timestamp’] > 600) { echo ’驗證失效, 請重新發送請求’; die(); } $sign = $data[’sign’]; unset($data[’sign’]); ksort($data); $params = http_build_query($data); // $secret是通過key在api的數據庫中查詢得到 $sign2 = md5($params . $secret); if ($sign == $sign2) { die(’驗證通過’); } else { die(’請求不合法’); }}?>

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php程序設計安全教程》、《php安全過濾技巧總結》、《PHP基本語法入門教程》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

標簽: PHP
相關文章:
主站蜘蛛池模板: 杰恒蠕动泵-蠕动泵专业厂家-19年专注蠕动泵 | 小程序开发公司_APP开发多少钱_软件开发定制_微信小程序制作_客户销售管理软件-济南小溪畅流网络科技有限公司 | 爆破器材运输车|烟花爆竹运输车|1-9类危险品厢式运输车|湖北江南专用特种汽车有限公司 | 智能气瓶柜(大型气瓶储存柜)百科 | 考勤系统_人事考勤管理系统_本地部署BS考勤系统_考勤软件_天时考勤管理专家 | 中医治疗皮肤病_潍坊银康医院「山东」重症皮肤病救治平台 | 板式换热器_板式换热器价格_管式换热器厂家-青岛康景辉 | 云南丰泰挖掘机修理厂-挖掘机维修,翻新,再制造的大型企业-云南丰泰工程机械维修有限公司 | SRRC认证_电磁兼容_EMC测试整改_FCC认证_SDOC认证-深圳市环测威检测技术有限公司 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 螺旋叶片_螺旋叶片成型机_绞龙叶片_莱州源泽机械制造有限公司 | 北京租车公司_汽车/客车/班车/大巴车租赁_商务会议/展会用车/旅游大巴出租_北京桐顺创业租车公司 | 合肥宠物店装修_合肥宠物美容院装修_合肥宠物医院设计装修公司-安徽盛世和居装饰 | (中山|佛山|江门)环氧地坪漆,停车场地板漆,车库地板漆,聚氨酯地板漆-中山永旺地坪漆厂家 | 爆炸冲击传感器-无线遥测传感器-航天星百科| 盘装氧量分析仪-防爆壁挂氧化锆分析仪-安徽吉帆仪表有限公司 | 东莞工作服_东莞工作服定制_工衣订做_东莞厂服 | 无锡装修装潢公司,口碑好的装饰装修公司-无锡索美装饰设计工程有限公司 | 粉末冶金注射成型厂家|MIM厂家|粉末冶金齿轮|MIM零件-深圳市新泰兴精密科技 | 江西自考网| 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 超声波焊接机_超音波熔接机_超声波塑焊机十大品牌_塑料超声波焊接设备厂家 | 合肥抖音SEO网站优化-网站建设-网络推广营销公司-百度爱采购-安徽企匠科技 | 物流公司电话|附近物流公司电话上门取货 | 恒湿机_除湿加湿一体机_恒湿净化消毒一体机厂家-杭州英腾电器有限公司 | 双能x射线骨密度检测仪_dxa骨密度仪_双能x线骨密度仪_品牌厂家【品源医疗】 | 披萨石_披萨盘_电器家电隔热绵加工定制_佛山市南海区西樵南方综合保温材料厂 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 冷水机-冰水机-冷冻机-冷风机-本森智能装备(深圳)有限公司 | 压力变送器-上海武锐自动化设备有限公司| 气动隔膜泵-电动隔膜泵-循环热水泵-液下排污/螺杆/管道/化工泵「厂家」浙江绿邦 | 昆明挖掘机修理厂_挖掘机翻新再制造-昆明聚力工程机械维修有限公司 | 多米诺-多米诺世界纪录团队-多米诺世界-多米诺团队培训-多米诺公关活动-多米诺创意广告-多米诺大型表演-多米诺专业赛事 | 驾驶式洗地机/扫地机_全自动洗地机_工业洗地机_荣事达工厂官网 | 过滤器_自清洗过滤器_气体过滤器_苏州华凯过滤技术有限公司 | 精密模具加工制造 - 富东懿 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 结晶点测定仪-润滑脂滴点测定仪-大连煜烁 | 超声波成孔成槽质量检测仪-压浆机-桥梁预应力智能张拉设备-上海硕冠检测设备有限公司 | 环球周刊网| 桐城新闻网—桐城市融媒体中心主办 |