導航:首頁 > 源碼編譯 > 916cnn

916cnn

發布時間:2024-07-12 02:02:30

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

以下是資料:

php中數字簽名與校驗

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

$res = openssl_pkey_new();
openssl_pkey_export($res,$pri);
$d= openssl_pkey_get_details($res);
$pub = $d['key'];
var_mp($pri,$pub);

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

string(916) "-----BEGIN PRIVATE KEY-----

wsETi80b4ZyYlYUSsAtvS7ZG+GSLAox24TKNwWIy5cUdKfK/5QEJjZ0S8LjRSYCG
+8z

+st3fjEblEfcPcoIq5uiKx2bnO3
f9g0yt+
+UI8OhmLbw/Vyh6Ii1glwMfyq
VS2lAakj9d1hqLYZvw+eNeZBnzZNPuMJg5aj/WKUqasCQQDHiFLS7Yb1rbhfjmRt
ZL4zXuvX1hVjTNo2TeZwPniGpYa+QHcauDDep5C9q//n+D+ZtkbkECxpOVhrUHSI
+
+a2epF/YENEtjL6N2RE8Y+0oTdlwr

b4dQkRkfqCHtyrWOeRcC1Y6FyTfNj+cRBzdIcmFc21hxj6HKy2M6/XGI3rAE5L+B
mmlSmN1enhoCUqc=
-----END PRIVATE KEY-----
"
string(272) "-----BEGIN PUBLIC KEY-----
+Y4dUMLBE4vNG+Gc
+UBCY2dEvC40UmAhraPS5MEE0Ky
mPAQV1QkEEt1V0as+KJ/W5nBksizCur0MbfTZyaZOmgZiRO89+fvM00y8HVG2GjA
HGKq7GA34AUjQYMGwwIDAQAB
-----END PUBLIC KEY-----
"

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

$res = openssl_pkey_get_private($pri);
if (openssl_sign('hello', $out, $res))
var_mp(base64_encode($out));

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

j19H+C/NQEcyowezOQ+gmGi2UoPJNXyJ+/p/pp7il+xGz2aUWdOXkJFgIc/+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演算法;數字簽名可以在 單點登錄 等系統中派上用場。

閱讀全文

與916cnn相關的資料

熱點內容
車用空調壓縮機品牌 瀏覽:830
在回收站中可以恢復幾個文件夾 瀏覽:916
phpget轉義 瀏覽:322
我的世界寶可夢伺服器叫什麼名字 瀏覽:748
新聞編譯難嗎 瀏覽:582
ia架構伺服器是什麼意思 瀏覽:220
linux查看區域網 瀏覽:77
金蝶啟動命令 瀏覽:480
安卓如何執行shell命令 瀏覽:947
linux路由控制 瀏覽:434
碧藍航線壓縮包解壓密碼 瀏覽:439
抗性提升命令方塊指令 瀏覽:769
程序員那麼可愛第30集免費看 瀏覽:637
如何下載老友麻將app 瀏覽:445
java路徑參數 瀏覽:592
php命名空間使用 瀏覽:298
app的競爭力如何寫 瀏覽:587
linux刪除swp 瀏覽:590
pdfxchange40 瀏覽:77
車牌號碼是哪個app 瀏覽:50