php源码分析之DZX1.5加密解密函数authcode用法


Posted in PHP onJune 17, 2015

本文实例讲述了php源码分析之DZX1.5加密解密函数authcode用法。分享给大家供大家参考。具体分析如下:

<?php
$authkey = '';
/**
 * @param string $string: 输入的需要加密(或解密)的明文(或密文)
 * @param string $operation: 'DECODE'或其它,其中默认表示解密,输入其它表示加密
 * @param string $key: 加解密密钥
 * @param int $expiry: 有效期
 */
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
  global $authkey;
  $ckey_length = 4;
  $key = md5($key != '' ? $key : $authkey);
  $keya = md5(substr($key, 0, 16));
  $keyb = md5(substr($key, 16, 16));
  $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
  $cryptkey = $keya.md5($keya.$keyc);
  $key_length = strlen($cryptkey);
  $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
  $string_length = strlen($string);
  $result = '';
  $box = range(0, 255);
  $rndkey = array();
  for($i = 0; $i <= 255; $i++) {
    $rndkey[$i] = ord($cryptkey[$i % $key_length]);
  }
  for($j = $i = 0; $i < 256; $i++) {
    $j = ($j + $box[$i] + $rndkey[$i]) % 256;
    $tmp = $box[$i];
    $box[$i] = $box[$j];
    $box[$j] = $tmp;
  }
  for($a = $j = $i = 0; $i < $string_length; $i++) {
    $a = ($a + 1) % 256;
    $j = ($j + $box[$a]) % 256;
    $tmp = $box[$a];
    $box[$a] = $box[$j];
    $box[$j] = $tmp;
    $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
  }
  if($operation == 'DECODE') {
    if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
      return substr($result, 26);
    } else {
      return '';
    }
  } else {
    return $keyc.str_replace('=', '', base64_encode($result));
  }
}
$str = '1234';
$key = '1234';
echo "明文:".$str;
echo "<br />";
echo "密钥:".$key;
$encode = authcode($str,'11',$key);
echo "<br />";
echo "加密后的密文:".$encode;
echo "<br />";
$decode = authcode($encode,'DECODE',$key);
echo "解密后的明文:".$decode;
/*End of php*/

运行结果如下:

明文:1234
密钥:1234
加密后的密文:a52f67eXZGVy0HtQBo4vOREhq3WxnL6E2zlx75JGfoJW
解密后的明文:1234

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
Discuz板块横排显示图片的实现方法
May 28 PHP
php自定义session示例分享
Apr 22 PHP
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
May 08 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
Jul 23 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 PHP
php计算两个文件相对路径的方法
Mar 14 PHP
php实现每天自动变换随机问候语的方法
May 12 PHP
PHP使用NuSOAP调用Web服务的方法
Jul 18 PHP
php的api数据接口书写实例(推荐)
Sep 22 PHP
php 调用ffmpeg获取视频信息的简单实现
Apr 03 PHP
Swoole源码中如何查询Websocket的连接问题详解
Aug 30 PHP
PHP7 windows支持
Mar 09 PHP
php源码分析之DZX1.5随机数函数random用法
Jun 17 #PHP
php正则替换处理HTML页面的方法
Jun 17 #PHP
PHP排序算法类实例
Jun 17 #PHP
php准确获取文件MIME类型的方法
Jun 17 #PHP
php操作MongoDB类实例
Jun 17 #PHP
PHP实现的购物车类实例
Jun 17 #PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
Jun 17 #PHP
You might like
php+mysql写的简单留言本实例代码
2008/07/25 PHP
php快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
php 变量未定义等错误的解决方法
2011/01/12 PHP
使用php语句将数据库*.sql文件导入数据库
2014/05/05 PHP
PHP实现的简单排列组合算法应用示例
2017/06/20 PHP
php 中的信号处理操作实例详解
2020/03/04 PHP
JS 自定义带默认值的函数
2011/07/21 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
Python计算程序运行时间的方法
2014/12/13 Python
python模拟鼠标拖动操作的方法
2015/03/11 Python
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
Python 数据结构之队列的实现
2017/01/22 Python
python开发简易版在线音乐播放器
2017/03/03 Python
Python虚拟环境项目实例
2017/11/20 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
虚拟机下载python是否需要联网
2020/07/27 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
丑小鸭教学反思
2014/02/03 职场文书
捐资助学倡议书
2014/04/15 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
就业协议书范本
2014/10/08 职场文书
起诉意见书范文
2015/05/19 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
python数据分析之用sklearn预测糖尿病
2021/04/22 Python
教你用Python爬取英雄联盟皮肤原画
2021/06/13 Python
Python编程super应用场景及示例解析
2021/10/05 Python