Home  >  Article  >  php教程  >  php之3des加密解密

php之3des加密解密

WBOY
WBOYOriginal
2016-06-06 20:12:25950browse

类文件 ?phpclass Crypt3Des { var $key; function Crypt3Des($key){ $this-key = $key; } function encrypt($input){ $size = mcrypt_get_block_size(MCRYPT_3DES,'ecb'); $input = $this-pkcs5_pad($input, $size); $key = str_pad($this-key,24,'0'); $td

类文件

<?php class Crypt3Des {      
     var $key;     
     function Crypt3Des($key){          
    $this->key = $key;
     }
     function encrypt($input){
         $size = mcrypt_get_block_size(MCRYPT_3DES,'ecb');  
         $input = $this->pkcs5_pad($input, $size);  
         $key = str_pad($this->key,24,'0');  
         $td = mcrypt_module_open(MCRYPT_3DES, '', 'ecb', '');  
         $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);  
         @mcrypt_generic_init($td, $key, $iv);  
         $data = mcrypt_generic($td, $input);  
         mcrypt_generic_deinit($td);  
         mcrypt_module_close($td);  
         //    $data = base64_encode($this->PaddingPKCS7($data)); 
         $data = base64_encode($data);
              return $data;  
     }          
     function decrypt($encrypted){
         $encrypted = base64_decode($encrypted);  
         $key = str_pad($this->key,24,'0');  
         $td = mcrypt_module_open(MCRYPT_3DES,'','ecb','');
         $iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND);
         $ks = mcrypt_enc_get_key_size($td);
         @mcrypt_generic_init($td, $key, $iv);
         $decrypted = mdecrypt_generic($td, $encrypted);
         mcrypt_generic_deinit($td);
         mcrypt_module_close($td); 
         $y=$this->pkcs5_unpad($decrypted);
              return $y;      
     }
     function pkcs5_pad ($text, $blocksize) {
         $pad = $blocksize - (strlen($text) % $blocksize);
         return $text . str_repeat(chr($pad), $pad);  
     }
     function pkcs5_unpad($text){          
         $pad = ord($text{strlen($text)-1});  
         if ($pad > strlen($text)) {  
             return false;  
         }  
         if (strspn($text, chr($pad), strlen($text) - $pad) != $pad){  
             return false;  
         }  
               return substr($text, 0, -1 * $pad);  
     } 
     function PaddingPKCS7($data) {
         $block_size = mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_CBC);
         $padding_char = $block_size - (strlen($data) % $block_size);
         $data .= str_repeat(chr($padding_char),$padding_char);
         return $data;
     } 
}

用法:

$crypt = new Crypt3Des('密钥');
$a = '待加密字符串';
$code = $crypt->encrypt($a);//加密
echo $crypt->decrypt($code);//解密
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