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 smarty截取中文字符乱码问题?gb2312/utf-8
Nov 07 PHP
PHP Error与Logging函数的深入理解
Jun 03 PHP
PHP在线生成二维码代码(google api)
Jun 03 PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
Yii2 GridView实现列表页直接修改数据的方法
May 16 PHP
php基于openssl的rsa加密解密示例
Jul 11 PHP
yii2 数据库读写分离配置示例
Feb 10 PHP
PHP检查端口是否可以被绑定的方法示例
Aug 09 PHP
微信JSSDK分享功能图文实例详解
Apr 08 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 PHP
PHP实现简易图形计算器
Aug 28 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基础知识:类与对象(2) 自动加载对象
2006/12/13 PHP
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
jQuery+CSS3实现树叶飘落特效
2015/02/01 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
js中日期的加减法
2015/05/06 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
2016/03/01 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
2020/05/29 Javascript
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
对pandas进行数据预处理的实例讲解
2018/04/20 Python
python 地图经纬度转换、纠偏的实例代码
2018/08/06 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
写好自荐信要注意的问题
2013/11/10 职场文书
大学军训感言400字
2014/03/11 职场文书
公司聘任书模板
2014/03/29 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
教师学习群众路线心得体会
2014/11/04 职场文书
2015年材料员工作总结
2015/04/30 职场文书
签证工作证明模板
2015/06/15 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL
bootstrapv4轮播图去除两侧阴影及线框的方法
2022/02/15 HTML / CSS
Golang日志包的使用
2022/04/20 Golang