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中stream(流)的用法
Mar 25 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
Apr 08 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
PHP魔术方法__GET、__SET使用实例
Nov 25 PHP
CentOS6.5 编译安装lnmp环境
Dec 21 PHP
php+mysqli使用预处理技术进行数据库查询的方法
Jan 28 PHP
php实现Mysql简易操作类
Oct 11 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
Mar 29 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
Oct 08 PHP
php微信公众号开发之秒杀
Oct 20 PHP
PHP isset()及empty()用法区别详解
Aug 29 PHP
php中yii框架实例用法
Dec 22 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
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
2016/04/02 PHP
thinkphp中U方法按路由规则生成url的方法
2018/03/12 PHP
IE iframe的onload方法分析小结
2010/01/07 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
JS实现的随机排序功能算法示例
2017/06/09 Javascript
zTree获取当前节点的下一级子节点数实例
2017/09/05 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
JavaScript组合设计模式--改进引入案例分析
2020/05/23 Javascript
使用Python生成随机密码的示例分享
2016/02/18 Python
Python实现的HMacMD5加密算法示例
2018/04/03 Python
python-django中的APPEND_SLASH实现方法
2019/06/21 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
用什么库写 Python 命令行程序(示例代码详解)
2020/02/20 Python
美国男士内衣品牌:Tommy John
2017/12/22 全球购物
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
解释一下ArrayList Vector和LinkedList的实现和区别
2013/04/26 面试题
中学生团员自我评价分享
2013/12/07 职场文书
银行实习鉴定
2013/12/13 职场文书
学生出入校管理制度
2014/01/16 职场文书
市场营销大学生职业规划书
2014/02/25 职场文书
廉洁自律承诺书
2014/03/27 职场文书
学雷锋树新风演讲稿
2014/05/10 职场文书
爱护草坪标语
2014/06/24 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
利用Python脚本写端口扫描器socket,python-nmap
2022/07/23 Python
Mysql如何查看是否使用到索引
2022/12/24 MySQL