前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PHP加密解密算法

PHP加密解密算法

作者头像
用户8099761
发布于 2023-05-11 07:44:23
发布于 2023-05-11 07:44:23
1.8K00
代码可运行
举报
文章被收录于专栏:私人订制私人订制
运行总次数:0
代码可运行

PHP的加密解密函数。还不错

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
  * 加密函数
  * [url=home.php?mod=space&uid=952169]@Param[/url] mixed $txt 需要加密的数据
  * @param string $key 密钥
  * [url=home.php?mod=space&uid=155549]@Return[/url] string 返回加密结果
  */
 function encrypt($txt, $key = ''){
    if (empty($txt)) return $txt;
    if (is_array($txt)) $txt = serialize($txt);
    if (empty($key)) $key = md5('MD5_KEY');
    $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.";
    $ikey ="-x6g6ZWm2G9g_vr0Bo.pOq3kRIxsZ6rm";
    $nh1 = rand(0,64);
    $nh2 = rand(0,64);
    $nh3 = rand(0,64);
    $ch1 = $chars{$nh1};
    $ch2 = $chars{$nh2};
    $ch3 = $chars{$nh3};
    $nhnum = $nh1 + $nh2 + $nh3;
    $knum = 0;$i = 0;
    while(isset($key{$i})) $knum +=ord($key{$i++});
    $mdKey = substr(md5(md5(md5($key.$ch1).$ch2.$ikey).$ch3),$nhnum%8,$knum%8 + 16);
    $txt = base64_encode(time().'_'.$txt);
    $txt = str_replace(array('+','/','='),array('-','_','.'),$txt);
    $tmp = '';
    $j=0;$k = 0;
    $tlen = strlen($txt);
    $klen = strlen($mdKey);
    for ($i=0; $i<$tlen; $i++) {
        $k = $k == $klen ? 0 : $k;
        $j = ($nhnum+strpos($chars,$txt{$i})+ord($mdKey{$k++}))%64;
        $tmp .= $chars{$j};
    }
    $tmplen = strlen($tmp);
    $tmp = substr_replace($tmp,$ch3,$nh2 % ++$tmplen,0);
    $tmp = substr_replace($tmp,$ch2,$nh1 % ++$tmplen,0);
    $tmp = substr_replace($tmp,$ch1,$knum % ++$tmplen,0);
    return $tmp;
 }
 /**
  * 解密函数
  * @param string $txt 需要解密的字符串
  * @param string $key 密匙
  * @return string 字符串类型的返回结果
  */
 function decrypt($txt, $key = '', $ttl = 0){
    if (empty($txt)) return $txt;
    if (empty($key)) $key = md5('MD5_KEY');
    $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.";
    $ikey  = "-x6g6ZWm2G9g_vr0Bo.pOq3kRIxsZ6rm";
    $knum  = 0;$i = 0;
    $tlen  = @strlen($txt);
    while(isset($key{$i})) $knum +=ord($key{$i++});
    $ch1 = @$txt{$knum % $tlen};
    $nh1 = strpos($chars,$ch1);
    $txt = @substr_replace($txt,'',$knum % $tlen--,1);
    $ch2 = @$txt{$nh1 % $tlen};
    $nh2 = @strpos($chars,$ch2);
    $txt = @substr_replace($txt,'',$nh1 % $tlen--,1);
    $ch3 = @$txt{$nh2 % $tlen};
    $nh3 = @strpos($chars,$ch3);
    $txt = @substr_replace($txt,'',$nh2 % $tlen--,1);
    $nhnum = $nh1 + $nh2 + $nh3;
    $mdKey = substr(md5(md5(md5($key.$ch1).$ch2.$ikey).$ch3),$nhnum % 8,$knum % 8 + 16);
    $tmp = '';
    $j = 0; $k = 0;
    $tlen = @strlen($txt);
    $klen = @strlen($mdKey);
    for ($i=0; $i<$tlen; $i++) {
        $k = $k == $klen ? 0 : $k;
        $j = strpos($chars,$txt{$i})-$nhnum - ord($mdKey{$k++});
        while ($j<0) $j+=64;
        $tmp .= $chars{$j};
    }
    $tmp = str_replace(array('-','_','.'),array('+','/','='),$tmp);
    $tmp = trim(base64_decode($tmp));
    if (preg_match("/\d{10}_/s",substr($tmp,0,11))){
        if ($ttl > 0 && (time() - substr($tmp,0,11) > $ttl)){
            $tmp = null;
        }else{
            $tmp = substr($tmp,11);
        }
    }
    //解密出来后先反序列化看是否是一个数组信息
    $res = unserialize($tmp);
    if($res){
        return $res;
    }else{
        return $tmp;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-3-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PHP 学习筆記[1] —— ThinkPHP 公共函数整理
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/53733707
泥豆芽儿 MT
2018/09/11
9120
6种php加密解密方法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/166656.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/19
1.7K0
各种基本算法实现小结(七)—— 常用算法
======================================================================
阳光岛主
2019/02/20
4190
攻防世界web进阶区Web_php_wrong_nginx_config详解
那么我们使用御剑进行扫描,扫描到了admin和robots.txt 我们访问admin试试
wuming
2021/01/21
9680
攻防世界web进阶区Web_php_wrong_nginx_config详解
介绍三种PHP加密解密算法
这里主要介绍三种常用的加密解密算法: 方法一: /** * @param $string 要加密/解密的字符串 * @param string $operation 类型,ENCODE 加密;DECODE 解密 * @param string $key 密匙 * @param int $expiry 有效期 * @return string */ function authcode($string, $operation = 'DECODE', $key = 'encryp
用户8099761
2023/05/11
5870
经典加密解密函数
<?php /** * 加密解密函数 * @param string $string 明文 或 密文 * @param string $operation DECODE 解密 | EN
joshua317
2018/04/16
7570
你应该这个姿势学习PHP(1)
  应用场景:能防止sql的注入(当然并不完全是可以,我们可以使用pdo进行预处理然后方式sql的注入,安全不能只靠一种方式防止事情的发生)
思梦php
2018/04/02
1.2K8
你应该这个姿势学习PHP(1)
PHP字符串增强加密
为了增加数据的安全性 避免相同字符多次加密得到结果是一致的 可以设置密文有效期 加密方式:Mcrypt::encode(Str, n); 解密方式: Mcrypt::decode(Str, n); require("Mcrypt.class.php") ; $code = Mcrypt::encode('sajkfcasjcla','7580'); echo "code-".$code; $code_ans = Mcrypt::decode("$code",'758
红目香薰
2022/11/29
1.4K0
康盛(discuz )牛逼的PHP加解密算法函数
  康盛的 authcode 函数很牛叉,是一个具有有效期的加解密函数,同一个字符每次加密所产生的结果都是不一致的,并且可以自定义设置过期时间。
那一叶随风
2018/08/22
1.6K0
【愚公系列】2023年06月 攻防世界-Web(Web_php_wrong_nginx_config)
PHP代码混淆后门脚本是指在进行PHP代码混淆的过程中,植入恶意代码以实现后门的攻击手段。一旦植入成功,黑客可以通过特定的操作指令,绕过用户身份验证,进入系统内部,获取敏感信息,甚至控制整个系统。
愚公搬代码
2025/05/28
810
【愚公系列】2023年06月 攻防世界-Web(Web_php_wrong_nginx_config)
php中常用的Rc4/Des/AuthCode可逆加密函数
首先是AuthCode可逆加密函数,在dz论坛等各大程序的数据传输和登陆验证都有用到。
V站CEO-西顾
2018/06/10
1.4K0
经典的PHP加密解密算法
项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理。 最常见的应用在用户登录以及一些API数据交换的场景。
用户8099761
2023/05/10
1.9K0
PHP实用函数分享
本章主要介绍了非常实用的PHP常用函数,汇总了加密解密、字符串操作、文件操作、防SQL注入等函数的实例与用法说明,在PHP项目开发中非常具有实用价值,需要的朋友可以参考下
PHP开发工程师
2021/05/06
6010
【编码狂想】深度探索C++编程之旅:“数组、字符串、函数与KMP算法解密“
键盘随机输入 6 个整数,将这些数据保存到数组中,获取数组中的最小值和最大值并输出。
SarPro
2024/02/20
1840
PHP的加密解密字符串函数建议收藏
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/120746.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/15
1.1K0
php参考手册String函数(2.82万字)
<?php $str=addcslashes("A001 A002 A003","A"); echo($str);//在大写A的前面加上反斜杠\,大小写是区分的哦 <?php $str = "Welc
贵哥的编程之路
2022/05/06
1.1K0
php参考手册String函数(2.82万字)
PHP实现各种经典算法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/108739.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/19
3490
PHP 中最常用的 100 个函数
PHP 静态分析引擎 Exakat 分析了 1900 个 PHP 开源项目,整理了最常用的 100 个 PHP 函数:
Denis
2023/04/13
3040
PHP常用函数 字符串处理函数
友情提示:此篇文章大约需要阅读 13分钟58秒,不足之处请多指教,感谢你的阅读。订阅本站
Meng小羽
2019/12/31
1.8K0
php笔记
接口返回格式 数组包对象 空的话 返回空数组,同一各客户端数据格式 IdArr 删除空值(去重(获取某值变成一维数组)) $idArr = array_filter(array_unique(array_column($list, 'id'))); 复制代码 php 生成文件txt到指定目录 file_put_contents("c:/zll.txt","内容"); 复制代码 php.ini设置上传临时文件路径 upload_tmp_dir = D:\owen\lswj\ 复制代码 基于php实现
OwenZhang
2021/12/08
3670
php笔记
相关推荐
PHP 学习筆記[1] —— ThinkPHP 公共函数整理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档