好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php 3des加密解密类程序代码 - php类库

php 3des加密解密类程序代码

php 3des加密解密是一个在数据传输中常用的一个简单的加密方式了,下面我整理了一个php 3des加密解密类程序有需要了解的朋友可进入参考.

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称,它相当于是对每个数据块应用三次DES加密算法,由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解,3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法.

php 3des加密解密类程序代码如下:

<?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 );  }  //开源代码phpfensi测试数据   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);//解密

查看更多关于php 3des加密解密类程序代码 - php类库的详细内容...

  阅读:48次