zoukankan      html  css  js  c++  java
  • PHP的加密解密字符串函数

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

    代码如下:

    /*********************************************************************
        函数名称: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');
  • 相关阅读:
    自我介绍
    工作流
    spring框架
    关于建立内部会议讨论规范的想法
    论文第3章:移动绘图平台的架构设计
    迭代器、推导式、函数式编程学习笔记
    Python装饰器学习(九步入门)
    Inkpad绘图原理浅析
    从零开始创建一个插件
    Entity Framework的启动速度优化
  • 原文地址:https://www.cnblogs.com/roucheng/p/3504884.html
Copyright © 2011-2022 走看看