好得很程序员自学网

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

PHP中加密解密函数与DES加密解密 - php函数

PHP中加密解密函数与DES加密解密

我了解中的php加密与解密方法有很多的,有常用的encrypt与DES加密解密算法了,下面我就给大家整理这两种算法的加密函数例子.

例子,php加密解密的例子,代码如下:

/*   *功能:对字符串进行加密处理   *参数一:需要加密的内容   *参数二:密钥   */   function  passport_encrypt( $str , $key ){  //加密函数    srand((double)microtime() * 1000000);    $encrypt_key =md5(rand(0, 32000));    $ctr =0;    $tmp = '' ;    for ( $i =0; $i < strlen ( $str ); $i ++){     $ctr = $ctr == strlen ( $encrypt_key )?0: $ctr ;     $tmp .= $encrypt_key [ $ctr ].( $str [ $i ] ^  $encrypt_key [ $ctr ++]);   }    return   base64_encode (passport_key( $tmp , $key ));  } 

解密代码如下:

/*   *功能:对字符串进行解密处理   *参数一:需要解密的密文   *参数二:密钥   */   function  passport_decrypt( $str , $key ){  //解密函数     $str =passport_key( base64_decode ( $str ), $key );    $tmp = '' ;    for ( $i =0; $i < strlen ( $str ); $i ++){     $md5 = $str [ $i ];     $tmp .= $str [++ $i ] ^  $md5 ;   } //开源代码phpfensi测试数据     return   $tmp ;  } 

辅助函数:

/*   *辅助函数   */   function  passport_key( $str , $encrypt_key ){    $encrypt_key =md5( $encrypt_key );    $ctr =0;    $tmp = '' ;    for ( $i =0; $i < strlen ( $str ); $i ++){     $ctr = $ctr == strlen ( $encrypt_key )?0: $ctr ;     $tmp .= $str [ $i ] ^  $encrypt_key [ $ctr ++];   }    return   $tmp ;  } 

使用如下所示:

$str = '作者:HdhCmsTestphpfensi测试数据' ;  $key = '123456' ;  $encrypt =passport_encrypt( $str , $key );  $decrypt =passport_decrypt( $encrypt , $key );    echo   '原文:' , $str . "<br><hr>" ;  echo   '密文:' , $encrypt . "<br><hr>" ;  echo   '译文:' , $decrypt . "<br><hr>" ; 

DES加密解密函数,代码如下:

<?php  class  DES  {    var   $key ;    var   $iv ;  //偏移量       function  DES(  $key ,  $iv =0 ) {    //key长度8例如:1234abcd      $this ->key =  $key ;     if (  $iv  == 0 ) {      $this ->iv =  $key ;    }  else  {      $this ->iv =  $iv ;  //mcrypt_create_iv ( mcrypt_get_block_size (MCRYPT_DES, MCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM );     }   }      function  encrypt( $str ) {    //加密,返回大写十六进制字符串      $size  = mcrypt_get_block_size ( MCRYPT_DES, MCRYPT_MODE_CBC );     $str  =  $this ->pkcs5Pad (  $str ,  $size  );     return   strtoupper ( bin2hex( mcrypt_cbc(MCRYPT_DES,  $this ->key,  $str , MCRYPT_ENCRYPT,  $this ->iv ) ) );   }      function  decrypt( $str ) {    //解密      $strBin  =  $this ->hex2bin(  strtolower (  $str  ) );     $str  = mcrypt_cbc( MCRYPT_DES,  $this ->key,  $strBin , MCRYPT_DECRYPT,  $this ->iv );     $str  =  $this ->pkcs5Unpad(  $str  );     return   $str ;   }      function  hex2bin( $hexData ) {     $binData  =  "" ;     for ( $i  = 0;  $i  <  strlen  (  $hexData  );  $i  += 2) {      $binData  .=  chr  ( hexdec (  substr  (  $hexData ,  $i , 2 ) ) );    }     return   $binData ;   }      function  pkcs5Pad( $text ,  $blocksize ) {     $pad  =  $blocksize  - ( strlen  (  $text  ) %  $blocksize );     return   $text  .  str_repeat  (  chr  (  $pad  ),  $pad  );   }      function  pkcs5Unpad( $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  );   }    }  ?>    //以下是测试结果:     $str  =  '12345678' ;    $key  =  '1234abcd' ;  $crypt  =  new  DES( $key );  $mstr  =  $crypt ->encrypt( $str );  $str  =  $crypt ->decrypt( $mstr );    echo    $str . ' <=> ' . $mstr ; 

例子2,代码如下:

/**   *加密需通过get方式在url中传递的参数   */   function  args_encode( $data ) {  if ( is_array ( $data )) {  $string  = http_build_query( $data );  return   base64_encode ( $string );  }  else  {  return  false;  }  }      /**   *获取url中get方式传递的参数   */   function  getargs() {  $string  =  base64_decode ( $_GET [ 'args' ]);  parse_str ( $string , $g );  return   $g ;  } 

查看更多关于PHP中加密解密函数与DES加密解密 - php函数的详细内容...

  阅读:34次