PHP的加密解密字符串函数

王朝学院·作者佚名  2016-08-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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

函数名称:encrypt

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

使用方法:

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

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

参数说明:

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

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

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

http://www.cnblogs.com/roucheng/

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

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

{

$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

{

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

}

}

$id = 132;

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

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

echo '<br />';

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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航