admin 发表于 2023-10-15 14:55:35

PHP DES加密解密

<?php
/**
* DES加密解密类
*/
if (!class_exists('DesCrypt')):
class DesCrypt{
   var $key   = '';
       var $cipherText = '';
   var $HcipherText = '';
   var $decrypted_data ='';
       function DesCrypt(){}

   /**
          * 加密函数
          * @param $str (需要加密的字符串)
          * @return 加密后的字符串
          */
   function encrypt($str) {
          
         $cipher = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '');
         $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES,MCRYPT_MODE_ECB), MCRYPT_RAND);

         if (mcrypt_generic_init($cipher, substr($this->key,0,8), $iv) != -1){
             $this->cipherText = mcrypt_generic($cipher,$this->pad($str));
             mcrypt_generic_deinit($cipher);
         
             $this->HcipherText=bin2hex($this->cipherText);
         
         }
         mcrypt_module_close($cipher);
      
         return strtoupper($this->HcipherText);
   }
   /**
          * 解密函数
          * @param $str (需要解密的字符串)
          * @return 解密后的字符串
          */
   function decrypt($str)
   {
         $str= pack('H*', $str);
         $cipher = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '');
         $iv   = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES,MCRYPT_MODE_ECB), MCRYPT_RAND);
         if (mcrypt_generic_init($cipher, substr($this->key,0,8), $iv) != -1)
         {
             $this->decrypted_data = mdecrypt_generic($cipher,$str);
             mcrypt_generic_deinit($cipher);
                       return $this->decrypted_data;
         }
         mcrypt_module_close($cipher);
         return $this->unpad($this->decrypted_data);
   }
   
   private function pad ($data)
   {
         $data = str_replace("\n","",$data);
         $data = str_replace("\t","",$data);
         $data = str_replace("\r","",$data);
         return $data;
   }

   private function 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);

   }

?>
页: [1]
查看完整版本: PHP DES加密解密