php接口開發數據簽名程序代碼(php接口開發數據簽名程序代碼是什麼)

本文目錄一覽:

php中如何調用接口以及編寫接口代碼詳解

可以用curl獲取借樓的信息。

所謂接口,就是提供一個url,只要你滿足它要求的參數,就能得到你要的數據。比如你拿到一個接口,帶上所需的參數,複製到地址欄同樣能得到。不過最好用程序得到。file_get_contents也可以用,不過有局限性。所以我建議用curl。給你一個函數,挺好用的。

function request($url,$https=true,$method=’GET’,$data=null){

$ch = curl_init();//初始化,得到資源

curl_setopt($ch, CURLOPT_URL,$url); //請求數據的路徑

curl_setopt($ch, CURLOPT_HEADER,false);//是否輸出頭

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不直接輸出結果

//curl_setopt ($ch, CURLOPT_SAFE_UPLOAD, 0);//兼容php之後的版本

if($https){

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //是否驗證主機

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //是否進行證書驗證

}

if($method==’POST’){

curl_setopt($ch, CURLOPT_POST, true); //POST傳輸

curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //傳輸數據

}

$content_json = curl_exec($ch);

if ($content_json === false) {

return “網絡請求出錯: ” . curl_error($ch);

}

curl_close($ch);

return $content_json;

}

用PHP如何實現數字簽名啊··跪求高人指點···

以下是資料:

php中數字簽名與校驗

1. 先用php生成一對公鑰和私鑰

$res = openssl_pkey_new();

openssl_pkey_export($res,$pri);

$d= openssl_pkey_get_details($res);

$pub = $d[‘key’];

var_dump($pri,$pub);

輸出依次為私鑰和公鑰的pem字串,如:

string(916) “—–BEGIN PRIVATE KEY—–

MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKs124okAnX5jh1Q

wsETi80b4ZyYlYUSsAtvS7ZG+GSLAox24TKNwWIy5cUdKfK/5QEJjZ0S8LjRSYCG

to9LkwQTQrKY8BBXVCQQS3VXRqz4on9bmcGSyLMK6vQxt9NnJpk6aBmJE7z35+8z

TTLwdUbYaMAcYqrsYDfgBSNBgwbDAgMBAAECgYBvolJfpFMmcW3El6AlHIWPW5qj

7KmxdxnqmssXMvdLN4iV5f24ZM2vJdjDydxMN+st3fjEblEfcPcoIq5uiKx2bnO3

f9g0yt+qUoXdz4LK6jV1NfuAZDcnBm7CXfE7BDREgyiRg4ZXIvp4L0Y2zBMdFTmg

LKkXb2M1P3pK53UbwQJBANupqPXFQjdHvAa3voT+UI8OhmLbw/Vyh6Ii1glwMfyq

VS2lAakj9d1hqLYZvw+eNeZBnzZNPuMJg5aj/WKUqasCQQDHiFLS7Yb1rbhfjmRt

ZL4zXuvX1hVjTNo2TeZwPniGpYa+QHcauDDep5C9q//n+D+ZtkbkECxpOVhrUHSI

KO9JAkEApl3lHd98uymVevEHVurWUMMLfSw9SlSn7WC9AwD6mwbW5G8oxtX5jOY+

RU1Sq52D7RSeZR40FvhJtXoWmudFaQJAc8E+a2epF/YENEtjL6N2RE8Y+0oTdlwr

a72dphhXy6VTmiPD9RhOIZ2MdrzF5Uk7fG0mi0Bmw1SlWvx93lABIQJBALXPeoNa

b4dQkRkfqCHtyrWOeRcC1Y6FyTfNj+cRBzdIcmFc21hxj6HKy2M6/XGI3rAE5L+B

mmlSmN1enhoCUqc=

—–END PRIVATE KEY—–

string(272) “—–BEGIN PUBLIC KEY—–

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrNduKJAJ1+Y4dUMLBE4vNG+Gc

mJWFErALb0u2RvhkiwKMduEyjcFiMuXFHSnyv+UBCY2dEvC40UmAhraPS5MEE0Ky

mPAQV1QkEEt1V0as+KJ/W5nBksizCur0MbfTZyaZOmgZiRO89+fvM00y8HVG2GjA

HGKq7GA34AUjQYMGwwIDAQAB

—–END PUBLIC KEY—–

2. 保存好自己的私鑰,把公鑰可以公開給別人。如果需要對某數據進行簽名,證明那數據是從你這裡發出的,就需要用私鑰:

$res = openssl_pkey_get_private($pri);

if (openssl_sign(‘hello’, $out, $res))

var_dump(base64_encode($out));

上例中 $pri 為自己的私鑰,’hello’ 為待簽名的數據,如果簽名成功,最後輸出為base64編碼後的簽名,如:

j19H+C/NQEcyowezOQ+gmGi2UoPJNXyJ+KwpkEzJ5u4qaRD3cY4qhfFfIosypypwJTJ4LjRYOIPNQMQm6ICj2nMdGfn/p/pp7il+xGz2aUWdOXkJFgIc/PGC95C9sLH04Tc6QSuV5IMd9rjBjyv+ieokMLFm9cmtN2hGag9vq1s=

3. 別人收到你的數據 ‘hello’ 和簽名字串,想驗證這是從你發來的數據的話,用你公開的公鑰驗證:

$sig = base64_decode($sig);

$res = openssl_pkey_get_public($pubkey);

if (openssl_verify(‘hello’, $sig, $res) === 1)

; // 通過驗證

上例中剛開始的 $sig 為之前你base64編碼過的簽名, $pubkey 為你的公鑰

php中這種簽名使用的是RSA算法;數字簽名可以在 單點登錄 等系統中派上用場。

php如何做數字簽名?

概括就是:“學會用PHP的openssl擴展!!”

1、先用openssl_pkey_new()函數產生一個私鑰pri_key,

2、用openssl_csr_new()函數以私鑰pri_key 產生一個信用證csr

3、用openssl_sign()函數以私鑰pri_key對一段數據data產生一個數字簽名signature。

4、用openssl_pkey_get_public()函數從信用證csr中獲得公鑰pub_key

5、把公鑰pub_key、數字簽名signature、數據data發給對方。

6、對方收到3項後,用openssl_verify()函數或其他驗證工具,驗證簽名。

7、對方驗證有效,開始使用你的信息data。驗證無效,再找你扯皮。

整個過程的雙方可以互換,即可讓對方出具三項,你來驗證。

php 請求接口數據方法,調用傳參數,求代碼

/**

 * 公用方法 post

 * @param $url 鏈接

 * @param $data 數據

 * @param $api api 執行操作參數 add update del

 * @return $result

 */

function sendHttpPost($url, $data = [], $api = ‘list’)

{

   $url = C(‘URL_API’) . $url;

   $param = [

      ‘ver’  = C(‘API_VER’),

      ‘api’  = $api,

      ‘date’ = time(),

      ‘DATA’ = $data

   ];

   $data = json_encode($param);

   print_r($data);

   $ch = curl_init();

   curl_setopt($ch, CURLOPT_URL, $url);

   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

   curl_setopt($ch, CURLOPT_POST, 1);

   curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

   $result = curl_exec($ch);

   curl_close($ch);

//    var_dump($data);

   return $result;

}

PHP—APP接口02

JSONXML

XML: 是一種標記語言,設計的宗旨是傳輸數據

JSON: 輕量級的數據交換格式

APP接口主要是用JSON輸出格式

APP接口輸出格式三要素:

1. code::錯誤碼

2. msg:錯誤碼對應的描述

3. data:接口返回的數據

誰有權限調用APP接口,客戶端需要帶着憑證來調用APP接口

JWT的原理:

服務端認證之後,生成一個JSON對象,返回給用戶。後續客戶端所有請求都會帶上這個JSON對象。服務端依靠這個JSON對象來認定用戶身份。

組成: Header, Payload, Signature

1. Header

說一下我是什麼

header通常包含了兩部分:類型和加密算法

{

    “alg”: “HS256”,

    “typ”: “JWT”

}

header需要經過Base64Url編碼後作為IWT的第一部分。

2. Payload

payload包含了claim, 三種類型reserved, public, private

reserved這些claim是JWT預先定義的,不強制使用,常用的有:

1). iss: 簽發者

2). exp: 過期的時間戳

3). sub: 面向的用戶

4). aud: 接收方

5). iat: 簽發時間

{

    “sub”:  “1234567890”,

    “name”:  “John Doe”,

    “admin”: true

}

payload需要經過Base64Url編碼後作為JWT的第二部分。

3. Signature

創建簽名使用編碼後的header和payload以及一個密匙,使用header中指定的簽名算法進行簽名

HMACSHA256(

base64UrlEncode(header) + “.” +

base64UrlEncode(payload),

secret

)

簽名是在服務端進行的,客戶端並不知道,所以是安全的。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/310141.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-04 19:32
下一篇 2025-01-04 19:32

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python數據標準差標準化

    本文將為大家詳細講述Python中的數據標準差標準化,以及涉及到的相關知識。 一、什麼是數據標準差標準化 數據標準差標準化是數據處理中的一種方法,通過對數據進行標準差標準化可以將不…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29
  • Python如何打亂數據集

    本文將從多個方面詳細闡述Python打亂數據集的方法。 一、shuffle函數原理 shuffle函數是Python中的一個內置函數,主要作用是將一個可迭代對象的元素隨機排序。 在…

    編程 2025-04-29

發表回復

登錄後才能評論