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 相关文章推荐
第七节--类的静态成员
Nov 16 PHP
JS实现php的伪分页
May 25 PHP
PHP学习笔记之一
Jan 17 PHP
使用XDebug调试及单元测试覆盖率分析
Jan 27 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
Apr 25 PHP
解析MySql与Java的时间类型
Jun 22 PHP
php中3种方法删除字符串中间的空格
Mar 10 PHP
PHP模块memcached使用指南
Dec 08 PHP
PHP获取photoshop写入图片文字信息的方法
Mar 31 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 PHP
php和asp语法上的区别总结
May 12 PHP
PHP使用递归按层级查找数据的方法
Nov 10 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 set_error_handler()函数使用详解(示例)
2013/11/12 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
php操作redis缓存方法分享
2015/06/03 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
js限制文本框为整数和货币的函数代码
2010/10/13 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
node.js中的fs.ftruncate方法使用说明
2014/12/15 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
JS实战篇之收缩菜单表单布局
2016/12/10 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
Avalonjs双向数据绑定与监听的实例代码
2017/06/23 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
2017/07/20 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
2019/11/20 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
python去掉行尾的换行符方法
2017/01/04 Python
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
Python切片索引用法示例
2018/05/15 Python
78行Python代码实现现微信撤回消息功能
2018/07/26 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
python实现大量图片重命名
2020/03/23 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
2020/03/09 Python
心理学专业毕业生推荐信范文
2013/11/21 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
查摆问题整改措施
2014/10/24 职场文书
电气工程师岗位职责
2015/02/12 职场文书
个人合作协议范本
2015/08/06 职场文书
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技