• 技术文章 >后端开发 >php教程

    带密匙的php加密解密示例分享_php实例

    2016-06-07 17:22:14原创274
    复制代码 代码如下:

    $id = "http://www.php.net";
    $token = encrypt($id, 'E', 'php');
    echo '加密:'.encrypt($id, 'E', 'php');
    echo '
    ';
    echo '解密:'.encrypt($token, 'D', 'php');

    /*********************************************************************
    函数名称:encrypt
    函数作用:加密解密字符串
    使用方法:
    加密 :encrypt('str','E','qingdou');
    解密 :encrypt('被加密过的字符串','D','qingdou');
    参数说明:
    $string :需要加密解密的字符串
    $operation:判断是加密还是解密:E:加密 D:解密
    $key :加密的钥匙(密匙);
    *********************************************************************/
    function encrypt($string,$operation,$key='')
    {
    $src = array("//m.sbmmt.com/m/","+","=");
    $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中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:密匙 php 加密 解密
    上一篇:php实现图片添加水印功能_php实例 下一篇:php教程之phpize使用方法_php实例
    大前端线上培训班

    相关文章推荐

    • 推荐一本PHP程序猿都应该拜读的书_PHP• Thinkphp关闭缓存的方法_php实例• PHP命名空间(Namespace)的使用详解_php实例• 请问一个PHP安装程序的小疑点• php.ini设立全攻略

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网