您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何使用PHP實現帶公鑰加密類,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
類代碼:
<?php /** * PHP加密類 * 瓊臺博客 */ 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 = 'https://www.jb51.net'; // 實例化加密類 $jiami= new Jiami(); // 設置公鑰 $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; ?>
頁面執行結果
結果1:
結果2:
由以上結果可以看到,每次加密產生的加密字符串都不一樣,這是隨機的。
解密的時候,需要使用加密時的公鑰,否則無法解密。如你這邊加密公鑰使用‘qttc',解密的時候,也需要使用這個'qttc'作為公鑰去解密,否則無法解密。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何使用PHP實現帶公鑰加密類”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。