麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > CMS > Discuz > 正文

php加密之discuz內容經典加密方式實例詳解

2024-09-11 09:03:26
字體:
來源:轉載
供稿:網友

本文實例講述了php加密之discuz內容經典加密方式。分享給大家供大家參考,具體如下:

導讀:有的時候,我們希望對表里的某些敏感字段進行加密,想了好長時間沒有比較好的解決方案,后臺在網上查了查,放心discuz論壇的這種方案對這種情況解決的不錯,特copy過來,給大家分享一下,代碼如下:

  1. header ("Content-type:text/html;charset=UTF-8"); 
  2. echo$string='花園路888號'
  3. echo'<hr/>加密有效期10秒,密文內容:'
  4. // $string='1111'; 
  5. $sss=authcode($string,'','',10); 
  6. echo$sss
  7. echo'<hr/>加密后立即解密:...'
  8. echoauthcode($sss); 
  9. sleep(6); 
  10. echo'<hr/>6秒后解密...'
  11. $aaaa=authcode($sss); 
  12. var_dump($aaaa); 
  13. sleep(5); 
  14. echo'<hr/>再次5秒后解密...'
  15. $aaaa=authcode($sss); 
  16. var_dump($aaaa); 
  17. /** 
  18.  * 
  19.  * @param string $string    明文或密文字符串 
  20.  * @param string $operation    DECODE表示解密,其它表示加密 
  21.  * @param string $key    密鑰 
  22.  * @param int $expiry    密文有效期,0代碼永不過期 
  23.  * @return string 
  24.  */ 
  25. functionauthcode($string,$operation='DECODE',$key='',$expiry= 0) { 
  26.     // 動態密匙長度,相同的明文會生成不同密文就是依靠動態密匙 
  27.     $ckey_length= 4; 
  28.     // 密匙 
  29.     $key= md5 ($key?$key:$GLOBALS['discuz_auth_key'] ); 
  30.     // 密匙a會參與加解密 
  31.     $keya= md5 (substr($key, 0, 16 ) ); 
  32.     // 密匙b會用來做數據完整性驗證 
  33.     $keyb= md5 (substr($key, 16, 16 ) ); 
  34.     // 密匙c用于變化生成的密文 
  35.     $keyc=$ckey_length? ($operation=='DECODE'?substr($string, 0,$ckey_length) :substr( md5 ( microtime () ), -$ckey_length)) :''
  36.     // 參與運算的密匙 
  37.     $cryptkey=$keya. md5 ($keya.$keyc); 
  38.     $key_length=strlen($cryptkey); 
  39.     // 明文,前10位用來保存時間戳,解密時驗證數據有效性,10到26位用來保存$keyb(密匙b),解密時會通過這個密匙驗證數據完整性 
  40.     // 如果是解碼的話,會從第$ckey_length位開始,因為密文前$ckey_length位保存 動態密匙,以保證解密正確 
  41.     $string=$operation=='DECODE'?base64_decode(substr($string,$ckey_length) ) : sprintf ('0d',$expiry?$expiry+ time () : 0 ) .substr( md5 ($string.$keyb), 0, 16 ) .$string
  42.     $string_length=strlen($string); 
  43.     $result=''
  44.     $box= range ( 0, 255 ); 
  45.     $rndkey=array(); 
  46.     // 產生密匙簿 
  47.     for($i= 0;$i<= 255;$i++) { 
  48.         $rndkey[$i] = ord ($cryptkey[$i%$key_length] ); 
  49.     } 
  50.     // 用固定的算法,打亂密匙簿,增加隨機性,好像很復雜,實際上對并不會增加密文的強度 
  51.     for($j=$i= 0;$i< 256;$i++) { 
  52.         $j= ($j+$box[$i] +$rndkey[$i]) % 256; 
  53.         $tmp=$box[$i]; 
  54.         $box[$i] =$box[$j]; 
  55.         $box[$j] =$tmp
  56.     } 
  57.     // 核心加解密部分 
  58.     for($a=$j=$i= 0;$i<$string_length;$i++) { 
  59.         $a= ($a+ 1) % 256; 
  60.        $j= ($j+$box[$a]) % 256; 
  61.         $tmp=$box[$a]; 
  62.         $box[$a] =$box[$j]; 
  63.         $box[$j] =$tmp
  64.         // 從密匙簿得出密匙進行異或,再轉成字符 
  65.         $result.=chr( ord ($string[$i] ) ^ ($box[($box[$a] +$box[$j]) % 256]) ); 
  66.     } 
  67.     if($operation=='DECODE') { 
  68.        // substr($result, 0, 10) == 0 驗證數據有效性 
  69.        // substr($result, 0, 10) - time() > 0 驗證數據有效性 
  70.         // substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 
  71.         // 16) 驗證數據完整性 
  72.       // 驗證數據有效性,請看未加密明文的格式 
  73.       if((substr($result, 0, 10 ) == 0 ||substr($result, 0, 10 ) - time () > 0) &&substr($result, 10, 16 ) ==substr( md5 (substr($result, 26 ) .$keyb), 0, 16 )) { 
  74.             returnsubstr($result, 26 ); 
  75.        }else
  76.             return''
  77.        } 
  78.     }else
  79.         // 把動態密匙保存在密文里,這也是為什么同樣的明文,生產不同密文后能解密的原因 
  80.         // 因為加密后的密文可能是一些特殊字符,復制過程可能會丟失,所以用base64編碼 
  81.         return$keyc.str_replace('=','',base64_encode($result) ); 
  82.     } 

以上代碼運行結果:

花園路888號

加密有效期10秒,密文內容:ce9eelLd6jpd7hZJTRg+/fgg8cD9VG+1NsHvkavEKhdvhk7jcfDoQTYSAAw

加密后立即解密:...花園路888號

6秒后解密...

string'花園路888號' (length=15)

再次5秒后解密...

string'' (length=0)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美h版在线观看 | 一级黄色在线观看 | 久久青草热 | 男女羞羞视频在线观看免费 | 亚洲成人福利网站 | 黄 色 免费网 站 成 人 | 狠狠操精品视频 | 一级观看免费完整版视频 | 毛片视频播放 | 国产毛片网| 美女视频在线观看黄 | 成人精品免费在线观看 | 欧美人与性禽动交精品 | 特黄一区二区三区 | 黄色视频一级毛片 | 毛片免费看电影 | 免费国产wwwwwww网站 | 法国性xxx精品hd专区 | 黄视频网址 | 日韩在线欧美在线 | 国产精品一区二区三区在线 | 在线成人免费av | 成人宗合网 | 色av综合在线 | 一本免费视频 | 精品成人国产在线观看男人呻吟 | 久久蜜臀一区二区三区av | 99亚洲精品| 蜜桃精品视频在线观看 | 亚州精品在线视频 | 天天色综合6 | chengrenzaixian | 在线a亚洲视频播放在线观看 | 国产99久久 | 国产精品久久久久一区二区 | 中文字幕偷拍 | 久久久久久久国产视频 | 国产伊人色 | 国产成人精品网站 | 美女视频大全网站免费 | 精品国产一区二区三区在线观看 |