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与javascript对多项选择的处理
Oct 09 PHP
实现了一个PHP5的getter/setter基类的代码
Feb 25 PHP
初次接触php抽象工厂模式(Elgg)
Mar 21 PHP
php Smarty 字符比较代码
Feb 27 PHP
PHP查询MySQL大量数据的时候内存占用分析
Jul 22 PHP
Linux环境下搭建php开发环境的操作步骤
Jun 17 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 PHP
php异常处理使用示例
Feb 25 PHP
php使用多个进程同时控制文件读写示例
Feb 28 PHP
Symfony2安装第三方Bundles实例详解
Feb 04 PHP
PHP基于自增数据如何生成不重复的随机数示例
May 19 PHP
PHP+Mysql分布式事务与解决方案深入理解
Feb 27 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常用数组函数介绍
2014/07/28 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
javascript从定义到执行 你不知道的那些事
2016/01/04 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
2016/01/19 Javascript
Bootstrap CSS组件之按钮下拉菜单
2016/12/17 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
jQuery HTML获取内容和属性操作实例分析
2020/05/20 jQuery
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
python开启多个子进程并行运行的方法
2015/04/18 Python
用Python的Flask框架结合MySQL写一个内存监控程序
2015/11/07 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
Python3使用正则表达式爬取内涵段子示例
2018/04/22 Python
python-str,list,set间的转换实例
2018/06/27 Python
详解Python3注释知识点
2019/02/19 Python
Python中查看变量的类型内存地址所占字节的大小
2019/06/26 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
python程序输出无内容的解决方式
2020/04/09 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
美国在线购物频道:Shop LC
2019/04/21 全球购物
十佳大学生事迹材料
2014/01/29 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
1000字打架检讨书
2014/11/03 职场文书
大学生读书笔记大全
2015/07/01 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
使用scrapy实现增量式爬取方式
2022/06/21 Python