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 flush类输出缓冲剖析
Oct 19 PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 PHP
php修改上传图片尺寸的方法
Apr 14 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
Mar 01 PHP
Symfony2实现在controller中获取url的方法
Mar 18 PHP
php使用正则表达式获取字符串中的URL
Dec 29 PHP
Yii 2.0如何使用页面缓存方法示例
May 23 PHP
thinkphp分页集成实例
Jul 24 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
Jun 04 PHP
php unlink()函数使用教程
Jul 12 PHP
tp5 实现列表数据根据状态排序
Oct 18 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
Mar 26 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
在PWS上安装PHP4.0正式版
2006/10/09 PHP
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
php基于curl实现的股票信息查询类实例
2016/11/11 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
使用JQUERY Tabs插件宿主IFRAMES
2010/01/01 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
jQuery获取复选框选中的当前行的某个字段的值
2017/09/15 jQuery
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
2021/01/26 Vue.js
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
用python删除java文件头上版权信息的方法
2014/07/31 Python
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
mac下pycharm设置python版本的图文教程
2018/06/13 Python
python读取excel指定列数据并写入到新的excel方法
2018/07/10 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
Python是怎样处理json模块的
2020/07/16 Python
用HTML5的canvas实现一个炫酷时钟效果
2016/05/20 HTML / CSS
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
工程安全员岗位职责
2014/03/09 职场文书
实验室标语
2014/06/21 职场文书
感谢信怎么写
2015/01/21 职场文书
2015年防汛工作总结
2015/05/15 职场文书
高中政治教师教学反思
2016/02/23 职场文书
python tkinter Entry控件的焦点移动操作
2021/05/22 Python
Redis 哨兵集群的实现
2021/06/18 Redis