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输出控制功能在简繁体转换中的应用
Oct 09 PHP
PHP中foreach循环中使用引用要注意的地方
Jan 02 PHP
PHP session有效期session.gc_maxlifetime
Apr 20 PHP
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
Sep 13 PHP
PHP中4个加速、缓存扩展的区别和选用建议
Mar 12 PHP
Codeigniter生成Excel文档的简单方法
Jun 12 PHP
Yii使用CLinkPager分页实例详解
Jul 23 PHP
学习php中的正则表达式
Aug 17 PHP
php生成带logo二维码方法小结
Apr 08 PHP
使用PHPMailer发送邮件实例
Feb 15 PHP
Laravel5.5以下版本中如何自定义日志行为详解
Aug 01 PHP
Laravel实现搜索的时候分页并携带参数
Oct 15 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程序的方法
2009/03/09 PHP
php获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
php之readdir函数用法实例
2014/11/13 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
一段实用的php验证码函数
2016/05/19 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
2013/09/10 Javascript
javascript结合CSS实现苹果开关按钮特效
2015/04/07 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
Moment.js实现多个同时倒计时
2019/08/26 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
用python实现的可以拷贝或剪切一个文件列表中的所有文件
2009/04/30 Python
win7 下搭建sublime的python开发环境的配置方法
2014/06/18 Python
Python下载指定页面上图片的方法
2016/05/12 Python
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
Python之时间和日期使用小结
2019/02/14 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
英国第一独立滑雪板商店:The Snowboard Asylum
2020/01/16 全球购物
牵手50香港:专为黄金岁月的单身人士而设的交友网站
2020/08/14 全球购物
美国轻奢时尚购物网站:REVOLVE(支持中文)
2020/07/18 全球购物
生态学毕业生自荐信
2013/10/27 职场文书
经验交流材料格式
2014/12/30 职场文书
寒假致家长的一封信
2015/10/10 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
pytorch Dropout过拟合的操作
2021/05/27 Python