程序中经常使用的PHP加密解密字符串函数

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

函数名称:encrypt

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

使用方法:

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

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

参数说明:

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

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

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

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

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

{

$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 '
';

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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐