實(shí)用的PHP帶公鑰加密類分享(每次加密結(jié)果都不一樣哦)
WEB交互安全一直是個(gè)各大網(wǎng)站的首要解決方案,本文介紹的PHP加密類非常實(shí)用哦,帶有公鑰,這是最大的亮點(diǎn),沒(méi)有公鑰是不能解密的,加密度非常高。
類代碼:
<?php /** * PHP加密類 * 瓊臺(tái)博客 */ class Jiami{ // 公鑰 protected $key = 'lee'; private function keyED($txt,$encrypt_key){ $encrypt_key = md5($encrypt_key); $ctr=0; $tmp = ''; for ($i=0;$i<strlen($txt);$i++){ if ($ctr==strlen($encrypt_key)){ $ctr=0; } $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1); $ctr++; } return $tmp; } public function encrypt($txt,$key=''){ if(empty($key)){ $key=$this->key; } srand((double)microtime()*1000000); $encrypt_key = md5(rand(0,32000)); $ctr=0; $tmp = ''; for ($i=0;$i<strlen($txt);$i++) { if ($ctr==strlen($encrypt_key)){ $ctr=0; } $tmp.= substr($encrypt_key,$ctr,1).(substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1)); $ctr++; } return $this->keyED($tmp,$key); } public function decrypt($txt,$key=''){ if(empty($key)){ $key=$this->key; } $txt = $this->keyED($txt,$key); $tmp = ''; for ($i=0;$i<strlen($txt);$i++){ $md5 = substr($txt,$i,1); $i++; $tmp.= (substr($txt,$i,1) ^ $md5); } return $tmp; } public function setKey($key){ if(empty($key)){ return null; } $this->key=$key; } public function getPK(){ return $this->key; } }
使用方法:
<?php // 先包含加密類 require_once('jiami.class.php'); // 要加密的字符串 $string = 'http://www.dbjr.com.cn'; // 實(shí)例化加密類 $jiami= new Jiami(); // 設(shè)置公鑰 $jiami->setKey('qttc'); // 加密字符串 $enc = $jiami->encrypt($string,$jiami->getPK()); // 解密字符串 $dec = $jiami->decrypt($enc,$jiami->getPK()); echo '<meta charset="utf-8" />'; echo '加密前 : '.$string .'<br/>'; echo '加密后 : '.$enc .'<br/>'; echo '解密后 : '.$dec; ?>
頁(yè)面執(zhí)行結(jié)果
結(jié)果1:
結(jié)果2:
由以上結(jié)果可以看到,每次加密產(chǎn)生的加密字符串都不一樣,這是隨機(jī)的。
解密的時(shí)候,需要使用加密時(shí)的公鑰,否則無(wú)法解密。如你這邊加密公鑰使用‘qttc',解密的時(shí)候,也需要使用這個(gè)'qttc'作為公鑰去解密,否則無(wú)法解密。
相關(guān)文章
PHP實(shí)現(xiàn)用戶認(rèn)證及管理完全源碼
PHP實(shí)現(xiàn)用戶認(rèn)證及管理完全源碼...2007-03-03php設(shè)計(jì)模式之享元模式分析【星際爭(zhēng)霸游戲案例】
這篇文章主要介紹了php設(shè)計(jì)模式之享元模式,結(jié)合星際爭(zhēng)霸游戲案例形式分析了PHP享元模式的相關(guān)原理與使用技巧,需要的朋友可以參考下2020-03-03Yii 框架控制器創(chuàng)建使用及控制器響應(yīng)操作示例
這篇文章主要介紹了Yii 框架控制器創(chuàng)建使用及控制器響應(yīng)操作,結(jié)合實(shí)例形式分析了Yii框架控制器調(diào)用、參數(shù)傳遞與響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下2019-10-10PHP 中使用ajax時(shí)一些常見(jiàn)錯(cuò)誤總結(jié)整理
這篇文章主要介紹了PHP 中使用ajax時(shí)一些常見(jiàn)錯(cuò)誤總結(jié)整理的相關(guān)資料,需要的朋友可以參考下2017-02-02laravel添加角色和模糊搜索功能的實(shí)現(xiàn)代碼
添加角色有很多種方法,角色添加顯示頁(yè)面路由、添加頁(yè)面控制器等,在角色搜索功能中通過(guò)修改index控制器來(lái)實(shí)現(xiàn),文中給大家提供laravel添加角色和模糊搜索功能的實(shí)現(xiàn)代碼,一起看看吧2021-06-06關(guān)于js和php對(duì)url編碼的處理方法
這篇文章主要介紹了關(guān)于js和php對(duì)url編碼的處理方法,需要的朋友可以參考下2014-03-03Discuz!X中SESSION機(jī)制實(shí)例詳解
這篇文章主要介紹了Discuz!X中SESSION機(jī)制,以實(shí)例形式較為詳細(xì)的分析了Discuz!X中SESSION機(jī)制的原理與數(shù)據(jù)庫(kù)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09