亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP的openssl加密擴展使用小結(推薦)

2024-05-04 23:48:19
字體:
來源:轉載
供稿:網友

引言

互聯網的發展史上,安全性一直是開發者們相當重視的一個主題,為了實現數據傳輸安全,我們需要保證:數據來源(非偽造請求)、數據完整性(沒有被人修改過)、數據私密性(密文,無法直接讀取)等。雖然現在已經有SSL/TLS協議實現的HTTPS協議,但是因在客戶端上依賴瀏覽器的正確實現,而且效率又很低,所以一般的敏感數據(如交易支付信息等)還是需要我們使用加密方法來手動加密。

雖然對于一般的WEB開發人員來說,大可不必深入了解一些安全相關的底層技術,但學習加密基礎知識,使用現有加密相關工具卻十分必要。由于工作需要,自己看了些加密相關文章,結合自己的使用經歷,完成此文。

加密基礎

學習如何使用加密之前,我們需要了解一些加密相關的基礎知識。

加密算法一般分為兩種:對稱加密算法和非對稱加密算法。

對稱加密

對稱加密算法是消息發送者和接收者使用同一個密匙,發送者使用密匙加密了文件,接收者使用同樣的密匙解密,獲取信息。常見的對稱加密算法有:des/aes/3des.

對稱加密算法的特點有:速度快,加密前后文件大小變化不大,但是密匙的保管是個大問題,因為消息發送方和接收方任意一方的密匙丟失,都會導致信息傳輸變得不安全。

非對稱加密

與對稱加密相對的是非對稱加密,非對稱加密的核心思想是使用一對相對的密匙,分為公匙和私匙,私匙自己安全保存,而將公匙公開。公鑰與私鑰是一對,如果用公鑰對數據進行加密,只有用對應的私鑰才能解密;如果用私鑰對數據進行加密,那么只有用對應的公鑰才能解密。發送數據前只需要使用接收方的公匙加密就行了。常見的非對稱加密算法有RSA/DSA:

非對稱加密雖然沒有密匙保存問題,但其計算量大,加密速度很慢,有時候我們還需要對大塊數據進行分塊加密。

數字簽名

為了保證數據的完整性,還需要通過散列函數計算得到一個散列值,這個散列值被稱為數字簽名。其特點有:

•無論原始數據是多大,結果的長度相同的;
•輸入一樣,輸出也相同;
•對輸入的微小改變,會使結果產生很大的變化;
•加密過程不可逆,無法通過散列值得到原來的數據;

常見的數字簽名算法有md5,hash1等算法。

PHP的openssl擴展

openssl擴展使用openssl加密擴展包,封裝了多個用于加密解密相關的PHP函數,極大地方便了對數據的加密解密。 常用的函數有:

對稱加密相關:

string openssl_encrypt ( string $data , string $method , string $password)

其中$data為其要加密的數據,$method是加密要使用的方法,$password是要使用的密匙,函數返回加密后的數據;

其中$method列表可以使用openssl_get_cipher_methods()來獲取,我們選取其中一個使用,$method列表形如:

Array(  0 => aes-128-cbc,  // aes加密  1 => des-ecb,    // des加密  2 => des-ede3,   // 3des加密  ...  )

其解密函數為 string openssl_encrypt ( string $data , string $method , string $password)

非對稱加密相關:

openssl_get_publickey();openssl_pkey_get_public();   // 從證書導出公匙;openssl_get_privatekey();openssl_pkey_get_private();  // 從證書導出私匙;

它們都只需要傳入證書文件(一般是.pem文件);

openssl_public_encrypt(string $data , string &$crypted , mixed $key [, int $padding = OPENSSL/_PKCS1/_PADDING ] )

使用公匙加密數據,其中$data是要加密的數據;$crypted是一個引用變量,加密后的數據會被放入這個變量中;$key是要傳入的公匙數據;由于被加密數據分組時,有可能不會正好為加密位數bit的整數倍,所以需要$padding(填充補齊),$padding的可選項有 OPENSSL_PKCS1_PADDING, OPENSSL_NO_PADDING,分別為PKCS1填充,或不使用填充;

與此方法相對的還有(傳入參數一致):

openssl_private_encrypt(); // 使用私匙加密;openssl_private_decrypt(); // 使用私匙解密;openssl_private_decrypt(); // 使用公匙解密;

還有簽名和驗簽函數:

bool openssl_sign ( string $data , string &$signature , mixed $priv_key_id [, mixed $signature_alg = OPENSSL_ALGO_SHA1 ] )int openssl_verify ( string $data , string $signature , mixed $pub_key_id [, mixed $signature_alg = OPENSSL_ALGO_SHA1 ] )

簽名函數:$data為要簽名的數據;$signature為簽名結果的引用變量;$priv_key_id為簽名所使用的私匙;$signature_alg為簽名要使用的算法,其算法列表可以使用openssl_get_md_methods ()得到,形如:

array(  0 => MD5,  1 => SHA1,  2 => SHA256,  ...)

驗簽函數:與簽名函數相對,只不過它要傳入與私匙對應的公匙;其結果為簽名驗證結果,1為成功,0為失敗,-1則表示錯誤;

加密實例

以下是一個非對稱加密使用的小例子:

// 獲取公匙$pub_key = openssl_get_publickey('test.pem');$encrypted = '';// 對數據分塊加密for ($offset = 0, $length = strlen($raw_msg); $offset < $length; $offset += $key_size){    $encryptedBlock = '';  $data = substr($raw_msg, $offset, $key_size)  if (!openssl_public_encrypt($data, $encryptedBlock, $pub_key, OPENSSL_PKCS1_PADDING)){    return '';  } else {    $encrypted .= $encryptedBlock; } return $encrypted;

而對稱加密就非常簡單了,直接使用ssl_encrypt()函數即可;

當然一些接口可能會對加密方法進行不同的要求,如不同的padding,加密塊大小等等,這些就需要使用者自己調整了。

因為我們是在HTTP協議之上處理的數據,所以數據加密完成后,就可以直接發送了,不用再考慮底層的傳輸,使用cURL或SOAP擴展方法,就可以直接請求接口啦。

結語

密碼學是一個十分高深的學科,它理論艱深,概念繁多,作為一個WEB開發人員,雖然不需要我們去研究其底層實現,但是學會使用封裝好的方法很有利于我們開發。甚至了解其基本實現,也可以觸類旁通,對算法等有新的理解。

以上這篇PHP的openssl加密擴展使用小結(推薦)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。

 

注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲激情视频网| 国产精品露脸av在线| 日韩电影中文字幕| 青青a在线精品免费观看| 欧美激情国内偷拍| 韩国v欧美v日本v亚洲| 91精品在线国产| 欧美成人精品h版在线观看| 国产精品欧美一区二区| 国产精品直播网红| 日韩av男人的天堂| 亚洲精品第一国产综合精品| 欧美激情视频在线观看| 亚洲视频在线观看网站| 中文字幕一精品亚洲无线一区| 国产一区二区三区在线观看视频| 国产91在线高潮白浆在线观看| 国产精品主播视频| 亚洲国产精品成人va在线观看| 国产精品久久在线观看| 亚洲丁香婷深爱综合| 日韩av电影在线播放| 2019中文字幕全在线观看| 久久久久久久久久久免费| 国产欧美精品一区二区| 国内精品中文字幕| 九九热最新视频//这里只有精品| 欧美性猛交视频| 欧美日韩激情小视频| 欧美日韩免费区域视频在线观看| 91久久国产婷婷一区二区| 欧美性xxxx极品hd满灌| 欧美精品videosex极品1| 亚洲一区二区久久久| 高潮白浆女日韩av免费看| 国产欧美日韩精品在线观看| 亚洲人成电影在线观看天堂色| 日韩在线观看av| 精品中文视频在线| 国产视频久久久| 红桃视频成人在线观看| 国产精品美女无圣光视频| 91欧美精品午夜性色福利在线| 国产日韩欧美影视| 日本成熟性欧美| 成人黄色午夜影院| 亚洲高清久久网| 亚洲精品电影在线| 日韩美女免费线视频| 久久电影一区二区| 九九热这里只有精品6| 国产精品免费视频xxxx| 欧美成人h版在线观看| 精品久久久久久久久国产字幕| 亚洲日韩中文字幕| 青青草一区二区| 亚洲视频网站在线观看| 日韩免费黄色av| 国产精品网红福利| 91精品国产自产91精品| 国产精品99久久久久久久久| 成人国产在线激情| 亚洲精品国产综合久久| 久久久日本电影| 日韩在线视频网站| 亚洲在线第一页| 国产成人av在线| 欧美成人精品不卡视频在线观看| 欧美自拍大量在线观看| www.日韩欧美| 日韩欧美国产视频| 亚洲www在线观看| 亚洲女人天堂网| 欧美视频免费在线观看| 国产精品视频内| 庆余年2免费日韩剧观看大牛| 久久九九热免费视频| 久久天天躁日日躁| 北条麻妃一区二区三区中文字幕| 日韩av在线最新| 欧美激情2020午夜免费观看| 国产精品久久久久久久久久久久久久| 日韩精品在线视频观看| 欧美乱大交做爰xxxⅹ性3| 国产日韩一区在线| 久久全球大尺度高清视频| 91精品国产777在线观看| 日韩免费视频在线观看| 黑人狂躁日本妞一区二区三区| 色中色综合影院手机版在线观看| 奇米四色中文综合久久| 欧美黑人极品猛少妇色xxxxx| 国产精自产拍久久久久久| 国产脚交av在线一区二区| 欧美日本在线视频中文字字幕| 久久99国产精品久久久久久久久| 伊人青青综合网站| 亚洲女性裸体视频| 亚洲午夜精品久久久久久性色| 在线性视频日韩欧美| 亚洲自拍偷拍福利| 日韩欧美精品网站| 亚洲国产免费av| 韩国精品久久久999| 日韩av网站导航| 激情懂色av一区av二区av| 成人在线激情视频| 亚洲精品不卡在线| 欧美乱人伦中文字幕在线| 欧美精品福利视频| 久久精品国亚洲| 中文字幕日韩欧美在线视频| 国产日韩精品入口| 亚洲аv电影天堂网| 精品久久在线播放| 尤物九九久久国产精品的特点| 欧美日韩一区二区三区在线免费观看| 黑人巨大精品欧美一区二区免费| 久久九九全国免费精品观看| 成人午夜在线视频一区| 久久久久久网址| 亚洲福利视频久久| 国产精品第一区| 91av免费观看91av精品在线| 77777少妇光屁股久久一区| 国产精品一二三视频| 久久久亚洲精品视频| 91精品视频在线播放| 日本aⅴ大伊香蕉精品视频| 91精品国产高清自在线看超| 91精品视频一区| 亚洲国内精品在线| 亚洲欧美国产高清va在线播| 亚洲福利小视频| 91天堂在线观看| 精品亚洲aⅴ在线观看| 中文字幕精品av| 日韩av电影在线网| 欧美日韩xxx| 亚洲视频在线免费观看| 日韩一级裸体免费视频| 国产成人精品一区二区| 亚洲精品之草原avav久久| 久久久影视精品| 精品香蕉一区二区三区| 中文字幕精品视频| 日韩中文字幕视频在线| 久久久国产视频| 日韩激情在线视频| 韩国福利视频一区| 国产一区香蕉久久| 日韩欧美国产中文字幕| 成人羞羞国产免费| 欧美在线视频观看免费网站| 亚洲精品免费一区二区三区| 国产精品日韩av| 国产aaa精品| 1769国内精品视频在线播放| 亚洲美女av在线播放| 亚洲欧美在线看| 国产拍精品一二三| 国产日韩在线播放| 日韩免费黄色av| 日韩有码在线播放|