導航:首頁 > 源碼編譯 > 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相關的資料

熱點內容
什麼是白盒加密演算法 瀏覽:804
樂書pdf 瀏覽:427
a星尋路演算法在3d中 瀏覽:137
抗震等級不同箍筋加密區范圍不同 瀏覽:471
xshell上傳文件命令 瀏覽:781
優先順序隊列java 瀏覽:156
輕量化騰訊雲伺服器有什麼用 瀏覽:462
編譯原理自編譯語言 瀏覽:425
閑魚app為什麼這么多 瀏覽:692
安卓手機玩游戲不卡怎麼設置 瀏覽:568
編譯鏈接裝載書 瀏覽:539
面試騰訊公司程序員 瀏覽:110
一個字母y是什麼app 瀏覽:144
魔獸大腳解壓安裝教程 瀏覽:9
超時代共享文件夾破解版 瀏覽:444
命令與征服紅色警戒3攻略 瀏覽:728
解壓縮jar包 瀏覽:588
如何計算伺服器的最大並發數 瀏覽:345
java數組類型定義 瀏覽:850
安卓卡一和卡二怎麼切換 瀏覽:986