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

php 分享一个字符串加密解密的函数

发布时间:2020-12-13 05:17:21 所属栏目:PHP教程 来源:网络整理
导读:函数代码如下: /********************************************************************* 函数名称:encrypt 函数作用:加密解密字符串 使用方法: 加密 :encrypt('str','E','nowamagic'); 解密 :encrypt('被加密过的字符串','D','nowamagic'); 参数说明: $st

函数代码如下:

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

函数名称: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),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,8)==substr(md5(substr($result,8).$key),8))

{

return substr($result,8);

}

else

{

return'';

}

}

else

{

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

}

}

使用实例:

$id = 132;

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

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

echo '
';

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

运行结果:

加密:AYCnIibFlg3ViRs

解密:132

(编辑:李大同)

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

    推荐文章
      热点阅读