字符串加密和解密

 function mymd5($string,$action="EN")

{ //字符串加密和解密

    global $webdb,$onlineip;//$webdb系统的一些配置信息,$onlineip 客户端ip 这个函数好像没有用到

    $secret_string = $webdb[mymd5].'5*j,.^&;?.%#@!'; //绝密字符串,可以任意设定

    //$webdb[mymd5] 可以自己设置一个字符串

    if($string=="") return "";

    if($action=="EN") $md5code=substr(md5($string),8,10); //动作是加密,则取明文的MD5码的 8到10位字符

    else//动作是解密(DE)

    {

        $md5code=substr($string,-10);//取$string后10个字符

        $string=substr($string,0,strlen($string)-10);//把$string倒数十个字符去掉

    }

    //$key = md5($md5code.$_SERVER["HTTP_USER_AGENT"].$secret_string);

    $key = md5($md5code.$secret_string);//密匙

    $string = ($action=="EN"?$string:base64_decode($string));//如果动作是解密则将要解密的字符串进行MIME base64解码

    //base64_decode() 对使用 MIME base64 编码的数据进行解码

    //base64_encode() 使用 MIME base64 对数据进行编码

    $len = strlen($key);

    $code = "";

    for($i=0; $i<strlen($string); $i++)

    {

        $k = $i%$len;

        $code .= $string[$i]^$key[$k];

    }

    $code = ($action == "DE" ? (substr(md5($code),8,10)==$md5code?$code:NULL) : base64_encode($code)."$md5code");

    return $code;

}

相关内容推荐

返回
顶部