手机
当前位置:查字典教程网 >编程开发 >php教程 >带密匙的php加密解密示例分享
带密匙的php加密解密示例分享
摘要:复制代码代码如下:

复制代码 代码如下:

<?php

$id = "http://www.jb51.net";

$token = encrypt($id, 'E', 'jb51');

echo '加密:'.encrypt($id, 'E', 'jb51');

echo '<br />';

echo '解密:'.encrypt($token, 'D', 'jb51');

/*********************************************************************

函数名称:encrypt

函数作用:加密解密字符串

使用方法:

加密 :encrypt('str','E','qingdou');

解密 :encrypt('被加密过的字符串','D','qingdou');

参数说明:

$string :需要加密解密的字符串

$operation:判断是加密还是解密:E:加密 D:解密

$key :加密的钥匙(密匙);

*********************************************************************/

function encrypt($string,$operation,$key='')

{

$src = array("/","+","=");

$dist = array("_a","_b","_c");

if($operation=='D'){$string = str_replace($dist,$src,$string);}

$key=md5($key);

$key_length=strlen($key);

$string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string;

$string_length=strlen($string);

$rndkey=$box=array();

$result='';

for($i=0;$i<=255;$i++)

{

$rndkey[$i]=ord($key[$i%$key_length]);

$box[$i]=$i;

}

for($j=$i=0;$i<256;$i++)

{

$j=($j+$box[$i]+$rndkey[$i])%256;

$tmp=$box[$i];

$box[$i]=$box[$j];

$box[$j]=$tmp;

}

for($a=$j=$i=0;$i<$string_length;$i++)

{

$a=($a+1)%256;

$j=($j+$box[$a])%256;

$tmp=$box[$a];

$box[$a]=$box[$j];

$box[$j]=$tmp;

$result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));

}

if($operation=='D')

{

if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8))

{

return substr($result,8);

}

else

{

return'';

}

}

else

{

$rdate = str_replace('=','',base64_encode($result));

$rdate = str_replace($src,$dist,$rdate);

return $rdate;

}

}

?>

【带密匙的php加密解密示例分享】相关文章:

国内php原创论坛

phpmyadmin 数据库导入2048kb的解决办法

PHP加密解密字符串汇总

如何利用php+mysql保存和输出文件

PHP rsa加密解密使用方法

层叠菜单的动态生成

php备份数据库类分享

php页面缓存ob系列函数介绍

PHP下MAIL的另一解决方案

PHP中的加密功能

精品推荐
分类导航