php pki加密技術(shù)(openssl)詳解
更新時間:2013年07月01日 10:30:20 作者:
本篇文章是對php中的pki加密技術(shù)(openssl)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
復(fù)制代碼 代碼如下:
<?php
//pki加密
//使用pki加密需要開啟 openssl擴(kuò)展
//php.ini extension = php_openssl.dll擴(kuò)展
/*pki模式是
* 公鑰加密,私鑰解密;
* 私鑰加密,公鑰解密;
*/
//私鑰加密,公鑰解密
//客戶端
//$data數(shù)據(jù)
$data = 'abcd';
//獲取私鑰 $priv_key_id
$priv_key_id = openssl_get_privatekey(file_get_contents('99bill-rsa.pem', r));
//獲取公鑰 $pub_key_id
$pub_key_id = openssl_get_publickey(file_get_contents('99bill-rsa.cer', r));
//$data首選通過SHA1哈希加密,然后通過$priv_key_id私鑰加密,生成簽名$signature
//$signature就是加密過的簽名
//openssl_sign()加密函數(shù),至于它的解密方法我不知道??????????????????????
openssl_sign($data, $signature, $priv_key_id, OPENSSL_ALGO_SHA1);
//還有兩種加密函數(shù),而且這兩種加密函數(shù)有解密方法,知道
//第一種:私鑰加密,公鑰解密
//$data要加密的數(shù)據(jù),$crypted是加密生成的數(shù)據(jù),$decrypted是解密生成的數(shù)據(jù); $data與$decrypted值相同
//通過$priv_key_id私鑰加密,生成$crypted;
openssl_private_encrypt($data, $crypted, $priv_key_id);
echo $crypted;
//通過$pub_key_id公鑰解密,生成$decrypted
openssl_public_decrypt($crypted, $decrypted , $pub_key_id);
//第二種:公鑰加密,私鑰解密
//$data要加密的數(shù)據(jù),$crypted是加密生成的數(shù)據(jù),$decrypted是解密生成的數(shù)據(jù); $data與$decrypted值相同
//通過$pub_key_id公鑰加密,生成$crypted;
openssl_public_encrypt($data, $crypted, $pub_key_id);
//通過$priv_key_id私鑰解密,生成$decrypted
openssl_private_decrypt($crypted, $decrypted, $priv_key_id);
//注意事項(xiàng),我這邊的獲取公鑰與私鑰的文件是不對應(yīng)的
//正常情況,獲取公鑰與私鑰文件是一一對應(yīng)的,這里我使用快錢的。
//快錢給了私鑰生成文件,對應(yīng)的公鑰生成文件在快錢那邊
//快錢給了公鑰生成文件,對應(yīng)的私鑰生成文件在快錢那邊
//也就是缺少了一個公鑰生成文件和一個私鑰生成文件
//我始終沒找到一個一一對應(yīng)的私鑰、公鑰生成文件,如果你找的了發(fā)我一份,謝謝。
// openssl_verify()方法驗(yàn)證簽名是否正確(私鑰加密生成的數(shù)據(jù)返回來,用對應(yīng)的公鑰驗(yàn)證),只有這一種情況。
// $signature公鑰加密生成的數(shù)據(jù),$data原始數(shù)據(jù),成功返回1,失敗返回0,錯誤返回-1
// $pub_key_id公鑰
openssl_verify($data, $signature, $pub_key_id);
//從內(nèi)存中釋放私鑰或公鑰
openssl_free_key($priv_key_id);
openssl_free_key($pub_key_id);
生成私鑰與公鑰
genrsa -out private-rsa.pem
rsa -in private-rsa.pem -pubout -out pubic-rsa.cer
您可能感興趣的文章:
- Windows安裝配置C/C++(VS2017)OpenSSL開發(fā)環(huán)境配置教程
- php開啟openssl的方法
- Linux下Nginx安裝的方法(pcre和openssl)
- PHP 7.1中利用OpenSSL代替Mcrypt加解密的方法詳解
- php實(shí)現(xiàn)基于openssl的加密解密方法
- php7安裝openssl擴(kuò)展方法
- C語言使用openSSL庫AES模塊實(shí)現(xiàn)加密功能詳解
- 詳解Linux(centos7)下安裝OpenSSL安裝圖文方法
- 不重新編譯PHP為php增加openssl模塊的方法
- linux openssl基礎(chǔ)介紹
- 一個檢測OpenSSL心臟出血漏洞的Python腳本分享
- php基于openssl的rsa加密解密示例
- 解析php php_openssl.dll的作用
- PHP的openssl加密擴(kuò)展使用小結(jié)(推薦)
- C語言使用openSSL庫DES模塊實(shí)現(xiàn)加密功能詳解
- 使用openssl 生成免費(fèi)證書的方法步驟
- Windows安裝Openssl并使用Openss生成公鑰私鑰
相關(guān)文章
PHP使用三種方法實(shí)現(xiàn)數(shù)據(jù)采集
這篇文章主要介紹了PHP使用三種方法實(shí)現(xiàn)數(shù)據(jù)采集,對數(shù)據(jù)采集感興趣的同學(xué),可以參考下2021-04-04
php max_execution_time執(zhí)行時間問題
大部分PHP代碼執(zhí)行時間都不會很久。但是有些時候,比如等待圖片上傳,可能執(zhí)行時間過長導(dǎo)致超時。2011-07-07
PHP中file_exists使用中遇到的問題小結(jié)
本文給大家詳細(xì)描述了作者在使用file_exists中遇到的問題以及分析解決方法的過程,非常的詳細(xì),有需要的小伙伴可以參考下。2016-04-04
詳解PHP 7.4 中數(shù)組延展操作符語法知識點(diǎn)
在本篇文章里小編給各位整理的是關(guān)于PHP 7.4 中數(shù)組延展操作符語法知識點(diǎn)內(nèi)容,需要的朋友們參考學(xué)習(xí)下。2019-07-07
PHP簡單讀取PDF頁數(shù)的實(shí)現(xiàn)方法
這篇文章主要介紹了PHP簡單讀取PDF頁數(shù)的實(shí)現(xiàn)方法,涉及php針對文件的讀取及正則運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下2016-07-07
微信公眾平臺開發(fā)關(guān)注及取消關(guān)注事件的方法
這篇文章主要介紹了微信公眾平臺開發(fā)關(guān)注及取消關(guān)注事件的方法,較為詳細(xì)的分析了微信公眾平臺設(shè)置關(guān)注的技巧,并附帶了相關(guān)參數(shù)的說明,具有一定的參考借鑒價值,需要的朋友可以參考下2014-12-12
KindEditor在php環(huán)境下上傳圖片功能集成的方法示例
這篇文章主要介紹了PHP環(huán)境下如何實(shí)現(xiàn)使用KindEditor編輯器上傳圖片,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

