熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

php pki加密技術(openssl)詳解

2013-11-15 12:35:26  來源: PHP編程 
本篇文章是對php中的pki加密技術(openssl)進行了詳細的分析介紹需要的朋友參考下   復制代碼 代碼如下:
<?php
//pki加密
//使用pki加密需要開啟 openssl擴展
//phpini extension = php_openssldll擴展
/*pki模式是
* 公鑰加密私鑰解密
* 私鑰加密公鑰解密
*/
//私鑰加密公鑰解密
//客戶端
//$data數據
$data = abcd;
//獲取私鑰 $priv_key_id
$priv_key_id = openssl_get_privatekey(file_get_contents(billrsapem r));
//獲取公鑰 $pub_key_id
$pub_key_id = openssl_get_publickey(file_get_contents(billrsacer r));
//$data首選通過SHA哈希加密然後通過$priv_key_id私鑰加密生成簽名$signature
//$signature就是加密過的簽名
//openssl_sign()加密函數至於它的解密方法我不知道??????????????????????
openssl_sign($data $signature $priv_key_id OPENSSL_ALGO_SHA);
//還有兩種加密函數而且這兩種加密函數有解密方法知道
//第一種私鑰加密公鑰解密
//$data要加密的數據$crypted是加密生成的數據$decrypted是解密生成的數據 $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要加密的數據$crypted是加密生成的數據$decrypted是解密生成的數據 $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);
//注意事項我這邊的獲取公鑰與私鑰的文件是不對應的
//正常情況獲取公鑰與私鑰文件是一一對應的這裡我使用快錢的
//快錢給了私鑰生成文件對應的公鑰生成文件在快錢那邊
//快錢給了公鑰生成文件對應的私鑰生成文件在快錢那邊
//也就是缺少了一個公鑰生成文件和一個私鑰生成文件
//我始終沒找到一個一一對應的私鑰公鑰生成文件如果你找的了發我一份謝謝
// openssl_verify()方法驗證簽名是否正確(私鑰加密生成的數據返回來用對應的公鑰驗證)只有這一種情況
// $signature公鑰加密生成的數據$data原始數據成功返回失敗返回錯誤返回
// $pub_key_id公鑰
openssl_verify($data $signature $pub_key_id);
//從內存中釋放私鑰或公鑰
openssl_free_key($priv_key_id);
openssl_free_key($pub_key_id);

  
生成私鑰與公鑰
genrsa out privatersapem
rsa in privatersapem pubout out pubicrsacer


From:http://tw.wingwit.com/Article/program/PHP/201311/21239.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.