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 相关文章推荐
PHP通用检测函数集合
Nov 25 PHP
php foreach、while性能比较
Oct 15 PHP
PHP simple_html_dom.php+正则 采集文章代码
Dec 24 PHP
php学习之简单计算器实现代码
Jun 09 PHP
深入array multisort排序原理的详解
Jun 18 PHP
php ImageMagick windows下安装教程
Jan 26 PHP
php封装的连接Mysql类及用法分析
Dec 10 PHP
php代码架构的八点注意事项
Jan 25 PHP
php常用图片处理类
Mar 16 PHP
ThinkPHP项目分组配置方法分析
Mar 23 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
PHP+iframe模拟Ajax上传文件功能示例
Jul 02 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中的时间显示
2007/01/18 PHP
php 生成随机验证码图片代码
2010/02/08 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
PHP中imagick函数的中文解释
2015/01/21 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
jquery随机展示头像代码
2011/12/21 Javascript
js单独获取一个checkbox看其是否被选中
2014/09/22 Javascript
JavaScript中实现sprintf、printf函数
2015/01/27 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
vue addRoutes路由动态加载操作
2020/08/04 Javascript
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
python创建和使用字典实例详解
2013/11/01 Python
python机器学习理论与实战(五)支持向量机
2018/01/19 Python
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
python使用KNN算法识别手写数字
2019/04/25 Python
利用pandas合并多个excel的方法示例
2019/10/10 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
中国旅游网站:途牛旅游网
2019/09/29 全球购物
银行员工职业规划范文
2014/01/21 职场文书
省级青年文明号申报材料
2014/05/23 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
降价通知函
2015/04/23 职场文书
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL