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 daddslashes()和 saddslashes()有哪些区别分析
Oct 26 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
Jun 18 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
yii实现级联下拉菜单的方法
Jul 31 PHP
php实现的返回数据格式化类实例
Sep 22 PHP
ThinkPHP实现生成和校验验证码功能
Apr 28 PHP
php实现文件预览功能
May 23 PHP
PHP中phar包的使用教程
Jun 14 PHP
PHP+redis实现的购物车单例类示例
Feb 02 PHP
PHP命名空间用法实例分析
Sep 04 PHP
laravel框架创建授权策略实例分析
Nov 22 PHP
PHP实现简单日历类编写
Aug 28 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程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
PHP封装的PDO数据库操作类实例
2017/06/21 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
兼容ie和firefox js关闭代码
2008/12/11 Javascript
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
2019/08/03 Javascript
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python找出9个连续的空闲端口
2016/02/01 Python
python dataframe向下向上填充,fillna和ffill的方法
2018/11/28 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
python实现猜数游戏
2020/03/27 Python
Python如何通过百度翻译API实现翻译功能
2020/04/02 Python
jupyter lab文件导出/下载方式
2020/04/22 Python
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
历史学专业个人的自我评价
2013/10/13 职场文书
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
物业经理自我鉴定
2014/03/03 职场文书
《英英学古诗》教学反思
2014/04/11 职场文书
小学教师培训方案
2014/06/09 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
专业技术职务聘任证明
2015/03/02 职场文书
个人年终总结怎么写
2015/03/09 职场文书
搬迁通知
2015/04/20 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
家庭经济困难证明
2015/06/23 职场文书
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL