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 相关文章推荐
我的论坛源代码(一)
Oct 09 PHP
为查询结果建立向后/向前按钮
Oct 09 PHP
php 数学运算验证码实现代码
Oct 11 PHP
基于PHP编程注意事项的小结
Apr 27 PHP
destoon实现商铺管理主页设置增加新菜单的方法
Jun 26 PHP
PHP中数据类型转换的三种方式
Apr 02 PHP
PHP 反射(Reflection)使用实例
May 12 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
Dec 08 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
Dec 31 PHP
php根据数据id自动生成编号的实现方法
Oct 16 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
PHP数组array类常见操作示例
May 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
晶体管来复再生式二管收音机
2021/03/02 无线电
简单谈谈PHP vs Node.js
2015/07/17 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
PDO实现学生管理系统
2020/03/21 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
父窗口获取弹出子窗口文本框的值
2006/06/27 Javascript
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
jQuery仿写百度百科的目录树
2017/01/03 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
2018/09/06 Javascript
js实现蒙版效果
2020/01/11 Javascript
Vue+Openlayers自定义轨迹动画
2020/09/24 Javascript
python处理图片之PIL模块简单使用方法
2015/05/11 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
Python中在脚本中引用其他文件函数的实现方法
2016/06/23 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
python线性插值解析
2020/07/05 Python
python爬虫请求头设置代码
2020/07/28 Python
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
英国羊皮鞋类领先品牌:Just Sheepskin
2019/12/12 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
收银出纳员岗位职责
2014/02/23 职场文书
白血病捐款倡议书
2014/05/14 职场文书
党员专题组织生活会发言材料
2014/10/17 职场文书
英语辞职信怎么写
2015/02/28 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL