php中加密解密DES类的简单使用方法示例


Posted in PHP onMarch 26, 2020

本文实例讲述了php中加密解密DES类的简单使用方法。分享给大家供大家参考,具体如下:

在平时的开发工作中,我们经常会对关键字符进行加密,可能为了安全 也可能为了规范,所以要正确使用DES加密解密

php中加密解密DES类的简单使用方法示例

代码1:

class DES
{
  var $key; // 密钥
  var $iv; // 偏移量

  function __construct( $key, $iv=0 ) {
    $this->key = $key;
    if( $iv == 0 ) {

      $this->iv = $key;

    } else {

      $this->iv = $iv; 
      // 创建初始向量, 并且检测密钥长度, Windows 平台请使用 MCRYPT_RAND
      // 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 );
 // bin2hex 把 ASCII 字符的字符串转换为十六进制值
    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 );
  }
}

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; DES5 has a deprecated constructor in D:\phpstudy_pro\WWW\des\DES5.php on line 2

Fatal error: Uncaught Error: Call to undefined function mcrypt_get_block_size() in D:\phpstudy_pro\WWW\des\DES5.php:19 Stack trace: #0 D:\phpstudy_pro\WWW\des\1.php(10): DES5->encrypt('podsmia') #1 {main} thrown in D:\phpstudy_pro\WWW\des\DES5.php on line 19

  • mcrypt_cbc 以 CBC 模式加解密数据, 在PHP 5.5.0+被弃用, PHP 7.0.0被移除
  • mcrypt_encrypt / mcrypt_decrypt 使用给定参数加密 / 解密, 在PHP 7.1.0+被弃用, 在PHP 7.2.0+被移除

代码2:

class DES7
{

  //要改的加密, 使用 openssl

  public function desEncrypt($str,$key) {

    $iv = $key;

    $data = openssl_encrypt($str,"DES-CBC",$key,OPENSSL_RAW_DATA,$iv);

    $data = strtolower(bin2hex($data));

    return $data;

  }

  //要改的解密

  public function desDecrypt($str,$key) {

    $iv = $key;

    return openssl_decrypt (hex2bin($str), 'DES-CBC', $key, OPENSSL_RAW_DATA,$iv);

  }

}
PHP 相关文章推荐
通过php快速统计某个数据库中每张表的数据量
Sep 04 PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 PHP
FireFox浏览器使用Javascript上传大文件
Oct 30 PHP
php使用正则表达式获取图片url的方法
Jan 16 PHP
php限制文件下载速度的代码
Oct 20 PHP
php连接oracle数据库的方法(测试成功)
May 26 PHP
Yii控制器中filter过滤器用法分析
Jul 15 PHP
PHP中的多种加密技术及代码示例解析
Oct 20 PHP
thinkPHP引入类的方法详解
Dec 08 PHP
PHP addcslashes()函数讲解
Feb 03 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
Mar 01 PHP
CentOS7编译安装php7.1的教程详解
Apr 18 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 #PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 #PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 #PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 #PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 #PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 #PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 #PHP
You might like
php URL编码解码函数代码
2009/03/10 PHP
php 解决旧系统 查出所有数据分页的类
2012/08/27 PHP
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
Laravel多用户认证系统示例详解
2018/03/13 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
php 输出缓冲 Output Control用法实例详解
2020/03/03 PHP
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
jquery中this的使用说明
2010/09/06 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
javascript中setAttribute()函数使用方法及兼容性
2015/07/19 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
JS hashMap实例详解
2016/05/26 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
2016/06/12 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
Python实现删除文件但保留指定文件
2015/06/21 Python
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
python用plt画图时,cmp设置方法
2018/12/13 Python
python判断无向图环是否存在的示例
2019/11/22 Python
python如何实现不可变字典inmutabledict
2020/01/08 Python
收集的7个CSS3代码生成工具
2010/04/17 HTML / CSS
让IE6支持css3,让 IE7、IE8 都支持CSS3
2011/10/09 HTML / CSS
咖啡蛋糕店创业计划书
2014/01/28 职场文书
吃空饷专项治理工作实施方案
2014/03/04 职场文书
岗位职责怎么写
2014/03/14 职场文书
二年级小学生评语
2014/04/21 职场文书
一年级学生评语
2014/04/23 职场文书
应用外语系自荐信
2014/06/26 职场文书
教师学习八项规定六项禁令思想汇报
2014/09/27 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技