加入收藏 | 设为首页 | 会员中心 | 我要投稿 南平站长网 (https://www.0599zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

浅谈 PHP 中的多种加密技术及代码示例

发布时间:2016-09-29 02:32:54 所属栏目:PHP教程 来源:菜问
导读:副标题#e# 同样是一道面试答错的问题,面试官问我非对称加密算法中有哪些经典的算法? 当时我愣了一下,因为我把非对称加密与单项散列加密的概念弄混淆了,所以更不用说什么非对称加密算法中有什么经典算法,结果当然也让面试官愣了一下,所以今天就花点时

加解密函数encrypt()

  1. <?php 
  2. //$string:需要加密解密的字符串;$operation:判断是加密还是解密,E表示加密,D表示解密;$key:密匙 
  3. function encrypt($string,$operation,$key=''){ 
  4.     $key=md5($key); 
  5.     $key_length=strlen($key); 
  6.       $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string; 
  7.     $string_length=strlen($string); 
  8.     $rndkey=$box=array(); 
  9.     $result=''; 
  10.     for($i=0;$i<=255;$i++){ 
  11.            $rndkey[$i]=ord($key[$i%$key_length]); 
  12.         $box[$i]=$i; 
  13.     } 
  14.     for($j=$i=0;$i<256;$i++){ 
  15.         $j=($j+$box[$i]+$rndkey[$i])%256; 
  16.         $tmp=$box[$i]; 
  17.         $box[$i]=$box[$j]; 
  18.         $box[$j]=$tmp; 
  19.     } 
  20.     for($a=$j=$i=0;$i<$string_length;$i++){ 
  21.         $a=($a+1)%256; 
  22.         $j=($j+$box[$a])%256; 
  23.         $tmp=$box[$a]; 
  24.         $box[$a]=$box[$j]; 
  25.         $box[$j]=$tmp; 
  26.         $result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256])); 
  27.     } 
  28.     if($operation=='D'){ 
  29.         if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8)){ 
  30.             return substr($result,8); 
  31.         }else{ 
  32.             return''; 
  33.         } 
  34.     }else{ 
  35.         return str_replace('=','',base64_encode($result)); 
  36.     } 
  37. ?> 
 

(编辑:南平站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读