search
Homephp教程php手册php之3des加密解密

php之3des加密解密

Jun 06, 2016 pm 08:12 PM
3descrypphpencrypt and decodedocument

类文件 ?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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.