1. 程式人生 > >PHP介面驗籤----一種簡單可行的方式

PHP介面驗籤----一種簡單可行的方式

背景:服務端和第三方服務有介面對接,那麼第三方有沒有一種簡單的方式判斷請求發自合法的合作方呢?
有一種簡潔的方式就是,雙方維護同一份私鑰,在發起請求的時候,發起方將當前的請求引數,按照key值進行排序,然後’key=value’拼接到私鑰後面,進行md5的編碼。接收方以同樣的處理方式,簽名一致則合法,否則非法。如下為php的對應的sig生成演算法舉例:

//摘抄自http://docs.developer.qq.com
$secret_key = '3023IU&xmsfs78';
ksort($params);
foreach ($params as $key => $value) {
$secret_key
.= $key.'='.$value; } $sign = md5($secret_key); return $sign;
//java示例
String sign = MD5Util.MD5(KEY_STRING + jsonData);
return REQ_URL"?sign=" + sign + "&data=" + URLEncoder.encode(jsonData, "utf8");

//請求接收方處理示例:
<?php
$sig = strtoupper($_GET['sign']);
$data = $_GET['data'];

$key = '12345';

if
($sig == strtoupper(md5($key . $data))) { exit('驗證通過'); } else { exit('驗證失敗'); } file_put_contents("D:/test/tempOut.txt", $key.PHP_EOL, FILE_APPEND);

相關推薦

PHP介面----簡單可行方式

背景:服務端和第三方服務有介面對接,那麼第三方有沒有一種簡單的方式判斷請求發自合法的合作方呢? 有一種簡潔的方式就是,雙方維護同一份私鑰,在發起請求的時候,發起方將當前的請求引數,按照key值進行排序

多執行緒中的全域性資訊統計的簡單實現方式(java實現)

如果你學過作業系統,我想你肯定對原子操作不會陌生,著名的哲學家就餐問題大家估計也不會陌生。如果現在有一個多執行緒的程式,有一個公共的訪問變數,那麼想正確的控制這個公共變數的值,每個學過計算機的人的處理方式肯定是使用一些互斥量,或者鎖機制,或者訊號量的方法保證對公共變數的訪問

php生成excel的另簡單方法

.com com span 來看 nbsp pan blog table content 之前我用table的方式寫過excel,還用php-excel這個類庫寫過excel。今天,我再向大家推薦一個超級簡單的寫excel的方法。 代碼: $xstr = "問題id\t問

簡單的加解密算法

coder 額外 lai hack crypt decrypt pro simple 無需   此算法源碼最初由 Borland 的 Delphi 語言編寫,似乎 Allen Bauer 是原作者,源碼如下。 const cMulKey = 52845; cA

SpringBank 開發日誌 簡單的攔截器設計實現

exp bst 一個 pin factory span 之前 system request 當交易由Action進入Service之前,需要根據不同的Service實際負責業務的不同,真正執行Service的業務邏輯之前,做一些檢查工作。這樣的攔截器應該是基於配置的,與Se

簡單的生產環境部署Node.js程序方法

set process 一次 ann 來安 環境配置 load 修改 evel 最近在部署Node.js程序時,寫了段簡單的腳本,發覺還挺簡單的,忍不住想與大家分享。 配置文件 首先,本地測試環境和生產環境的數據庫連接這些配置信息是不一樣的,需要將其分開為兩個文件存儲

簡單的對象賦值方法,定義實例後以{}賦值,比傳統方法更簡潔

method ott static set num arr nbsp st2 () public class Rectangle { public Point TopLeft { get; set; } public Point Botto

簡單的圖像修復方法

col nes gb2 tle .com splay 產生 end left 該方法可以用於美顏中的祛斑,通過快速叠代的方式去除斑點。 假設輸入圖像為: 計算方向權重: 對於其他方向,操作類似We。 最終的輸出為: 對要修復的區域,反復進行同樣的操作即可。 簡單

java安全性的簡單思路

授權 安全 時間格式 判斷 第三方接口 對比 當前時間 服務 格式 關於接口安全性的考慮。這客戶端在調用接口時,將acId授權碼以加密的方式(可逆加密方式)傳遞過來, 服務端這邊接收後進行解密,然後在服務器端這邊的授權名單中進行匹配,判斷該授權碼是否被授權,從而判斷第三方調

數獨問題的簡單演算法程式碼實現

五一期間無聊時想起去年考研複試有一道上機題目當時沒作出來,於是一時興起想重新拾起看看是當時太緊張,還是自己能力不足。然後發現這道題目還真稍微有些難度,相當於一道數獨問題(sudoku)的簡化版。自己想來想去也只能想到兩種演算法,一種是拿剩餘元素做全排列測試,一種是回溯法測試。最後只實現了一個全排

關於ASP.NET MVC 5 的簡單的身份驗證方式:FormsAuthentication.Authenticate

在ASP.NET MVC 5中,身份驗證分別有三種方式。分別為使用FormsAuthentication、MemberShip和Identity進行驗證。   (PS:本系列的邏輯程式碼請勿直接用於生產,請自己多加一層抽象後再投入使用)   為了展示這三種方式,我們先新建一個MVC

Python單例的簡單寫法

this args self. name 創建方式 方法 沒有 easily 獲取 最原始的想法就是每個類都重寫new方法。 class Dog: dog = None def __new__(cls, *args, **kwargs):

判斷中文文字編碼格式是gbk還是utf-8的簡單方式

import java.io.*; public class charsetTest { public static String charsetType(String fileName) throws IOException { BufferedReader reader =

LCG(linear congruential generator): 簡單的隨機數生成演算法

目錄 LCG演算法 python 實現 LCG演算法 LCG(linear congruential generator)線性同餘演算法,是一個古老的產生隨機數的演算法。由以下引數組成: 引數 m a c X

LCG(linear congruential generator): 簡單的隨機數生成算法

ble 優點 line 寫入 head 速度 body generator 上一個 目錄 LCG算法 python 實現 LCG算法 LCG(linear congruential generator)線性同余算法,是一個古老的產生隨機數的算法。由以下參數組成:

什麼是REST——適合初學者的簡單解釋,第一部分:介紹

  原文地址:https://medium.com/extend/what-is-rest-a-simple-explanation-for-beginners-part-1-introduction-b4a072f8740f     這篇文章是解釋REST基本概念的兩篇文章中的第一篇。      閱讀

pytroch用自定義的tensor初始化nn.sequential中linear或者conv層的簡單方法。

話不多說,上程式碼,上面寫的很清楚。 import torch.nn as nn import torch net= nn.Sequential( nn.Linear(1024, 512), nn.ReLU(inplace=True), nn.Linear(512,

mysql 效能統計的簡單方式

#TPS - Transactions Per Second(每秒傳輸的事物處理個數),這是指伺服器每秒處理的事務數,支援事務的儲存引擎如InnoDB等特有的一個性能指標。 #計算方法: #TPS = (COM_COMMIT + COM_ROLLBACK)/UPTIME use informa

實現對gridview刪除行時彈出確認對話方塊的簡單方法

首先,在GridView的屬性對框話框中點選“Columns”進入它的“欄位”設計器。接著在“欄位”設計器中選擇以前已加上的那個CommandField“刪除”列,這時在它的屬性列表下會看到一個“將此它段轉換為 TemplateFied”的項,點選將它轉換為TemplateFied列。完後退出該欄位設計器,切

獲取當前格式化時間的簡單方法

Date.prototype.isLeapYear = function() { return (0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0))); } //--