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图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
PHP针对JSON操作实例分析
Jan 12 PHP
php实现递归的三种基本方式
Jul 04 PHP
PHP面试题之文件目录操作
Oct 15 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
Mar 18 PHP
PHP 绘制网站登录首页图片验证码
Apr 12 PHP
PHP生成可点击刷新的验证码简单示例
May 13 PHP
根据key删除数组中指定的元素实现方法
Mar 02 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
Oct 23 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
Apr 04 PHP
PHP设计模式(观察者模式)
Jul 07 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与XML联手进行网站编程代码实例
2008/07/10 PHP
javascript高亮效果的二种实现方法
2008/09/14 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
2017/05/08 jQuery
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
2019/03/07 Javascript
Openlayers实现扩散的动态点(水纹效果)
2020/08/17 Javascript
Python 查看文件的编码格式方法
2017/12/21 Python
mac系统安装Python3初体验
2018/01/02 Python
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
python字符串与url编码的转换实例
2018/05/10 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
某公司面试题
2012/03/05 面试题
5个HTML5的常用本地存储方式详解与介绍
2021/03/27 HTML / CSS
说明书范文
2014/05/07 职场文书
奉献家乡演讲稿
2014/09/16 职场文书
开业庆典活动策划方案
2014/09/21 职场文书
基层党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
2015年企业团支部工作总结
2015/05/21 职场文书
干部理论学习心得体会
2016/01/21 职场文书
Html5新增了哪些功能
2021/04/16 HTML / CSS
python tkinter实现定时关机
2021/04/21 Python
用Python创建简易网站图文教程
2021/06/11 Python
关于python爬虫应用urllib库作用分析
2021/09/04 Python
vue使用watch监听属性变化
2022/04/30 Vue.js