温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PHP中的加密和解密类实例用法

发布时间:2021-09-04 17:03:10 阅读:150 作者:chen 栏目:开发技术
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章主要讲解了“PHP中的加密和解密类实例用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中的加密和解密类实例用法”吧!

关键代码如下所示:

<?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){
$tmparray_slice($row$columnKey1);
$tmp= (is_array($tmp) && !empty($tmp))?current($tmp):null;
}else{
$tmpisset($row[$columnKey])?$row[$columnKey]:null;
}
if(!$indexKeyIsNull){
if($indexKeyIsNumber){
$key array_slice($row$indexKey1);
$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($key016));
$keyb md5(substr($key1616));
$keyc $ckey_length ? ($operation == 'DECODE' ? substr($string0$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), 016).$string;
$string_length strlen($string);
$result '';
$box range(0255);
$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($result010) == 0 || substr($result010) - time() > 0) && substr($result1016) == substr(md5(substr($result26).$keyb), 016)) {
return substr($result26);
} else {
return '';
}
} else {
return $keyc.str_replace('='''base64_encode($result));
}
}

感谢各位的阅读,以上就是“PHP中的加密和解密类实例用法”的内容了,经过本文的学习后,相信大家对PHP中的加密和解密类实例用法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI

开发者交流群×