php 加密、解密类与调用实例

发布时间:2021-01-19编辑:脚本学堂
本文分享一个php实现的加密与解密的类,并附有一个调用实例,有需要的朋友参考下。

本节分享的这个加密与解密类,支持二种加密方式,base_64encode与enc加密,并附有解密函数。

代码:

<?php 
/**
* 功能:php加密与解密类
* 可用于加密、解密 cookie值或Url参数
* 编辑:www.jb200.com
*/
class Encryption { 
    /** 
     *  设置一个难以猜测的加密种子 
     * 
     *  @access public 
     */ 
    var $skey = "-_-donthackit-_-"; 
    /** 
     *  安全加密URL或cookie值
     * 
     *  @access public 
     */ 
    public  function safe_b64encode($string) { 
        $data = base64_encode($string); 
        $data = str_replace(array('+','/','='),array('-','_',''),$data); 
        return $data; 
    } 
    /** 
     *  解密URL或Cookie值 
     * 
     *  @access public 
     */ 
    public function safe_b64decode($string) { 
        $data = str_replace(array('-','_'),array('+','/'),$string); 
        $mod4 = strlen($data) % 4; 
        if ($mod4) { 
            $data .= substr('====', $mod4); 
        } 
        return base64_decode($data); 
    } 
    /** 
     *  以下加密方法需要mcrypt库 
     * 
     *  @access public 
     */ 
    public  function enc($value){ 
        if(!$value){return false;} 
        $text = $value; 
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); 
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); 
        $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->skey, $text, MCRYPT_MODE_ECB, $iv); 
        return trim($this->safe_b64encode($crypttext));  
    } 
    /** 
     *  以下解密方法需要mcrypt库
     * 
     *  @access public 
     */ 
    public function dec($value){ 
        if(!$value){return false;} 
        $crypttext = $this->safe_b64decode($value);  
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); 
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); 
        $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->skey, $crypttext, MCRYPT_MODE_ECB, $iv); 
        return trim($decrypttext); 
    } 
} 
?> 

调用示例:

<?php 
/**
* 加密与解密数据,包括URL或cookie值等
* 示例参考
*/
require_once "Encryption.class.php"; 

$oEncryption = new Encryption; 
echo "加 密: ".$oEncryption->enc("sudhir"); 
echo "<br/>"; 
echo "解 密: ".$oEncryption->dec($oEncryption->enc("sudhir")); 
?>