使用:
成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)豐寧,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
$pri_key ="";
$pub_key = "";
$char = '方方塊兒';//要加密的字符
$sign = $this-RsaEncrypt($char,$pri_key);//加密結(jié)果
$result = $this-RsaDecrypt($sign,$pub_key);//對加密結(jié)果進(jìn)行解密
加密:
public function RsaEncrypt($str,$pri_key){
$pi_key =openssl_pkey_get_private($pri_key);
if(!$pi_key)return false;//秘鑰不可用
openssl_private_encrypt($str,$encrypted,$pi_key);
$encrypted =base64_encode($encrypted);
return $encrypted;
}
解密:
public function RsaDecrypt($str,$pub_key){
$pu_key =openssl_pkey_get_public($pub_key);
if(!$pu_key)return false;//秘鑰不可用
openssl_public_decrypt(base64_decode($str),$decrypted,$pu_key);
return $decrypted;
}
注:開啟PHP的php_openssl擴(kuò)展
最近兩年一直從事與金融相關(guān)項(xiàng)目的開發(fā)與維護(hù)。但是,關(guān)于 PHP 加密解密的最佳實(shí)踐,網(wǎng)上沒有人給出一個完美的總結(jié)。恰逢最近看了《圖解密碼技術(shù)》一書,對 PHP 加解密有了更深刻的認(rèn)識。
為了避免各位看枯燥的文字理論,開篇我就把總結(jié)給出:
一、對稱加密
對稱加密的特點(diǎn)是加解密速度快,加密后的密文強(qiáng)度目前還沒有硬解的可能性。但是,在未來隨著計(jì)算機(jī)性能的提升有可能會出現(xiàn)被破解的可能性。
對稱加密的缺點(diǎn)也很明顯。對稱加密的加密過程與解密過程使用的是同一把密鑰。一旦泄漏密鑰,加密就失去了任何意義。
根據(jù)《圖解密碼技術(shù)》一書的推薦,對稱加密目前推薦使用 AES。在 PHP 當(dāng)中要實(shí)現(xiàn) AES 加解密,是使用 openssl 擴(kuò)展來實(shí)現(xiàn)。所以,請確保你的 PHP 已經(jīng)開啟了 openssl 擴(kuò)展。
可以通過如下方式檢測:
或者如下方式檢測:
AES 的加密模式屬于分組密碼模式。所謂分組密碼,是加密時把明文按照固定的長度分組,然后再進(jìn)行加密。當(dāng)然,細(xì)節(jié)之處很很多不同。AES 分組模式有多種:ECB、CBC、CFB、OFB、CTR 五種分組模式。目前優(yōu)先推薦使用 CBC 模式。
如果使用 CBC 模式,那么在加密的時候,就需要一個前置的加密向量 IV。當(dāng)初博主在使用 AES 來加密的時候,就很奇怪一個對稱加密為何要這個向量。因?yàn)?,在博主寒冰的潛意識里,對稱加密只需要一個密鑰就 Ok 了。沒想到 AES 加密還有多種模式,而這個 CBC 模式恰恰就需要一個這樣的向量值。關(guān)于這個向量大家可以在網(wǎng)上查閱相關(guān)的資料。這個東西非常重要,也非常好理解。
關(guān)于 PHP AES 加解密會用到的相關(guān)方法:
AES 支持三種強(qiáng)度:128、192、256。128 位的強(qiáng)度最低,但是,加密解密速度較快。256 位強(qiáng)度最高,但是,加密解密速度最低。所以,大家根據(jù)自己系統(tǒng)的重要程度選擇使用對應(yīng)強(qiáng)度。通常普通的金融項(xiàng)目使用 192 位完整夠用了。頂級的就用 256 位。其他的就用 128 位吧。
二、非對稱加密
非對稱加密是指公鑰加密私鑰解密,私鑰加密公鑰解密的算法。非對稱加密的算法有很多。《圖解密碼技術(shù)》一書推薦使用 RSA 算法。它使用起來也非常簡單。
要使用 RSA 算法。首先,我們必須生成一對公鑰私鑰。其實(shí)生成公鑰私鑰很簡單。
在 Linux 系統(tǒng),直接使用如下命令生成:
此命令會生 ~/.ssh/ 目錄下生成兩個文件:
id_rsa 是私鑰, is_rsa.pub 是公鑰。
關(guān)于 PHP RSA 加解密會用到的相關(guān)方法:
以上就是關(guān)于在 PHP 項(xiàng)目開發(fā)中,我們使用的加密解密算法的一個總結(jié)。博主寒冰在總結(jié)過程中難免會有不足之處,還請大家指正!謝謝!
phprsa解密對性能的影響是性能大幅度降低。RSA算法屬于非對稱加密算法,非對稱加密算法需要兩個秘鑰:公開密鑰(publickey)和私有秘鑰(privatekey)。