php中文网 | cnphp.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 281|回复: 0

PHP DES加密解密

[复制链接]

3150

主题

3160

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
1
威望
0
积分
7976
贡献
0
注册时间
2021-4-14
最后登录
2024-11-24
在线时间
763 小时
QQ
发表于 2023-10-15 14:55:35 | 显示全部楼层 |阅读模式
  1. <?php
  2. /**
  3.   * DES加密解密类  
  4.   */
  5. if (!class_exists('DesCrypt')):
  6. class DesCrypt{
  7.      var $key   = '';
  8.          var $cipherText = '';
  9.      var $HcipherText = '';
  10.      var $decrypted_data ='';
  11.          function DesCrypt(){}

  12.      /**
  13.           * 加密函数
  14.           * @param $str (需要加密的字符串)
  15.           * @return 加密后的字符串
  16.           */
  17.      function encrypt($str) {
  18.             
  19.          $cipher = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '');
  20.          $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES,MCRYPT_MODE_ECB), MCRYPT_RAND);

  21.          if (mcrypt_generic_init($cipher, substr($this->key,0,8), $iv) != -1){
  22.              $this->cipherText = mcrypt_generic($cipher,$this->pad($str));
  23.              mcrypt_generic_deinit($cipher);
  24.            
  25.              $this->HcipherText=bin2hex($this->cipherText);
  26.            
  27.          }
  28.          mcrypt_module_close($cipher);
  29.         
  30.          return strtoupper($this->HcipherText);
  31.      }
  32.      /**
  33.           * 解密函数
  34.           * @param $str (需要解密的字符串)
  35.           * @return 解密后的字符串
  36.           */
  37.      function decrypt($str)
  38.      {
  39.          $str  = pack('H*', $str);
  40.          $cipher = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '');
  41.          $iv     = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES,MCRYPT_MODE_ECB), MCRYPT_RAND);
  42.          if (mcrypt_generic_init($cipher, substr($this->key,0,8), $iv) != -1)
  43.          {
  44.              $this->decrypted_data = mdecrypt_generic($cipher,$str);
  45.              mcrypt_generic_deinit($cipher);
  46.                          return $this->decrypted_data;
  47.          }
  48.          mcrypt_module_close($cipher);
  49.          return $this->unpad($this->decrypted_data);
  50.      }
  51.      
  52.      private function pad ($data)
  53.      {
  54.          $data = str_replace("\n","",$data);
  55.          $data = str_replace("\t","",$data);
  56.          $data = str_replace("\r","",$data);
  57.          return $data;
  58.      }

  59.      private function unpad ($text)
  60.      {
  61.          $pad = ord($text{strlen($text) - 1});
  62.          if ($pad > strlen($text)) {
  63.              return false;
  64.          }
  65.          if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) {
  66.              return false;
  67.          }
  68.          return substr($text, 0, - 1 * $pad);

  69.      }

  70. ?>
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|php中文网 | cnphp.com ( 赣ICP备2021002321号-2 )

GMT+8, 2024-11-24 15:13 , Processed in 0.772027 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

申明:本站所有资源皆搜集自网络,相关版权归版权持有人所有,如有侵权,请电邮(fiorkn@foxmail.com)告之,本站会尽快删除。

快速回复 返回顶部 返回列表