Home >php教程 >PHP源码 >PHP加密解密类加强版

PHP加密解密类加强版

PHP中文网
PHP中文网Original
2016-05-25 17:07:561192browse

PHP加密解密类加强版

<?php
class Ender{
    private $enkey;//加密解密用的密钥
    private $rep_char=&#39;#&#39;;//替换加密后的base64字符串中的=,因为=在有些场合是禁止使用的,
                          //这里可以用一个允许的字符作为替换。
    //构造参数是密钥
    public function __construct($key=&#39;&#39;){
        if(!$key){
            $this->enkey=$key;
        }
    }
    //设置密钥http://blog.ddian.cn
    public function set_key($key){
        $this->enkey=$key;
    }
    private function keyED($txt,$encrypt_key) 
    { 
    $encrypt_key = md5($encrypt_key); 
    $ctr=0; 
    $tmp = ""; 
    for ($i=0;$i<strlen($txt);$i++) 
    { 
    if ($ctr==strlen($encrypt_key)) $ctr=0; 
    $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1); 
    $ctr++; 
    } 
    return $tmp;
    }
    //加密字符串
    public function encrypt($txt,$key=&#39;&#39;) 
    {
    if(!$key){
            $key=$this->enkey;
        }
    srand((double)microtime()*1000000); 
    $encrypt_key = md5(rand(0,32000)); 
    $ctr=0; 
    $tmp = ""; 
    for ($i=0;$i<strlen($txt);$i++) 
    { 
    if ($ctr==strlen($encrypt_key)) $ctr=0; 
    $tmp.= substr($encrypt_key,$ctr,1) . 
    (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1)); 
    $ctr++; 
    }
    $r=base64_encode($this->keyED($tmp,$key));
    $r=str_replace(&#39;=&#39;,$this->rep_char,$r);
    return $r; 
    }
    //解密字符串
    public function decrypt($txt,$key=&#39;&#39;) 
    {
    $txt=str_replace($this->rep_char,&#39;=&#39;,$txt);
    $txt=base64_decode($txt);
    if(!$key){
            $key=$this->enkey;
        }
    $txt = $this->keyED($txt,$key); 
    $tmp = ""; 
    for ($i=0;$i<strlen($txt);$i++) 
    { 
    $md5 = substr($txt,$i,1); 
    $i++; 
    $tmp.= (substr($txt,$i,1) ^ $md5); 
    } 
    return $tmp; 
    }
        
}

                   

 以上就是PHP加密解密类加强版的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:PDO类的封装Next article:分页类尾部页码导航