PHP加密解密类实例代码


Posted in PHP onJuly 20, 2016

关键代码如下所示:

<?php
function i_array_column($input, $columnKey, $indexKey=null){
if(!function_exists('array_column')){
$columnKeyIsNumber = (is_numeric($columnKey))?true:false;
$indexKeyIsNull = (is_null($indexKey))?true :false;
$indexKeyIsNumber = (is_numeric($indexKey))?true:false;
$result = array();
foreach((array)$input as $key=>$row){
if($columnKeyIsNumber){
$tmp= array_slice($row, $columnKey, 1);
$tmp= (is_array($tmp) && !empty($tmp))?current($tmp):null;
}else{
$tmp= isset($row[$columnKey])?$row[$columnKey]:null;
}
if(!$indexKeyIsNull){
if($indexKeyIsNumber){
$key = array_slice($row, $indexKey, 1);
$key = (is_array($key) && !empty($key))?current($key):null;
$key = is_null($key)?0:$key;
}else{
$key = isset($row[$indexKey])?$row[$indexKey]:0;
}
}
$result[$key] = $tmp;
}
return $result;
}else{
return array_column($input, $columnKey, $indexKey);
}
}
function randcode($len, $mode = 2){
$rcode = '';
switch($mode){
case 1: //去除0、o、O、l等易混淆字符
$chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghijkmnpqrstuvwxyz';
break;
case 2: //纯数字
$chars = '0123456789';
break;
case 3: //全数字+大小写字母
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
break;
case 4: //全数字+大小写字母+一些特殊字符
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz~!@#$%^&*()';
break;
}
$count = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $len; $i++) {
$rcode .= $chars[mt_rand(0, $count)];
}
return $rcode;
}
/**
* $string 明文或密文
* $operation 加密ENCODE或解密DECODE
* $key 密钥
* $expiry 密钥有效期
*/
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
$ckey_length = 4;
$key = md5($key);
$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));
}
}

以上所述是小编给大家介绍的PHP加密解密类实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
为IP查询添加GOOGLE地图功能的代码
Aug 08 PHP
php !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
Jan 07 PHP
php 注释规范
Mar 29 PHP
php基础教程 php内置函数实例教程
Aug 21 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
Aug 22 PHP
php的sprintf函数的用法 控制浮点数格式
Feb 14 PHP
thinkphp验证码显示不出来的解决方法
Mar 29 PHP
php中memcache 基本操作实例
May 17 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
Nov 15 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
Dec 23 PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 PHP
php实现等比例压缩图片
Jul 26 PHP
php图片添加水印例子
Jul 20 #PHP
支付宝服务窗API接口开发php版本
Jul 20 #PHP
PHP二维数组矩形转置实例
Jul 20 #PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 #PHP
PHP的AES加密算法完整实例
Jul 20 #PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 #PHP
PHP简单日历实现方法
Jul 20 #PHP
You might like
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
PHP实现的memcache环形队列类实例
2015/07/28 PHP
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
2015/09/22 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
checkbox 多选框 联动实现代码
2008/10/22 Javascript
javascript 动态添加事件代码
2008/11/30 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
DOM事件探秘篇
2017/02/15 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
[43:57]Liquid vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
在Python中处理XML的教程
2015/04/29 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
Python 内置变量和函数的查看及说明介绍
2019/12/25 Python
Django --Xadmin 判断登录者身份实例
2020/07/03 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
法国在线宠物店:zooplus.fr
2018/02/23 全球购物
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
高三毕业生自我鉴定
2013/12/20 职场文书
水果超市创业计划书
2014/01/27 职场文书
石油大学毕业生自荐信
2014/01/28 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
检察院起诉书
2015/05/20 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书
送给客户微信问候语!
2019/07/04 职场文书