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

6种php加密解密方法

作者头像
全栈程序员站长
发布于 2022-09-19 02:26:44
发布于 2022-09-19 02:26:44
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php  
function encryptDecrypt($key, $string, $decrypt){   
    if($decrypt){   
        $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "12");   
        return $decrypted;   
    }else{   
        $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));   
        return $encrypted;   
    }   
}   

//加密:"z0JAx4qMwcF+db5TNbp/xwdUM84snRsXvvpXuaCa4Bk="  
echo encryptDecrypt('password', 'Helloweba欢迎您',0);   
//解密:"Helloweba欢迎您"  
echo encryptDecrypt('password', 'z0JAx4qMwcF+db5TNbp/xwdUM84snRsXvvpXuaCa4Bk=',1);  
?>  
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php  
//加密函数  
function lock_url($txt,$key='liiu'){  
    $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";  
    $nh = rand(0,64);  
    $ch = $chars[$nh];  
    $mdKey = md5($key.$ch);  
    $mdKey = substr($mdKey,$nh%8, $nh%8+7);  
    $txt = base64_encode($txt);  
    $tmp = '';  
    $i=0;$j=0;$k = 0;  
    for ($i=0; $i<strlen($txt); $i++) {  
        $k = $k == strlen($mdKey) ? 0 : $k;  
        $j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64;  
        $tmp .= $chars[$j];  
    }  
    return urlencode($ch.$tmp);  
}  
//解密函数  
function unlock_url($txt,$key='liiu'){  
    $txt = urldecode($txt);  
    $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";  
    $ch = $txt[0];  
    $nh = strpos($chars,$ch);  
    $mdKey = md5($key.$ch);  
    $mdKey = substr($mdKey,$nh%8, $nh%8+7);  
    $txt = substr($txt,1);  
    $tmp = '';  
    $i=0;$j=0; $k = 0;  
    for ($i=0; $i<strlen($txt); $i++) {  
        $k = $k == strlen($mdKey) ? 0 : $k;  
        $j = strpos($chars,$txt[$i])-$nh - ord($mdKey[$k++]);  
        while ($j<0) $j+=64;  
        $tmp .= $chars[$j];  
    }  
    return base64_decode($tmp);  
}  
?>  
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php  
//改进后的算法  
//加密函数  
function lock_url($txt,$key='str'){  
    $txt = $txt.$key;  
    $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";  
    $nh = rand(0,64);  
    $ch = $chars[$nh];  
    $mdKey = md5($key.$ch);  
    $mdKey = substr($mdKey,$nh%8, $nh%8+7);  
    $txt = base64_encode($txt);  
    $tmp = '';  
    $i=0;$j=0;$k = 0;  
    for ($i=0; $i<strlen($txt); $i++) {  
        $k = $k == strlen($mdKey) ? 0 : $k;  
        $j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64;  
        $tmp .= $chars[$j];  
    }  
    return urlencode(base64_encode($ch.$tmp));  
}  
//解密函数  
function unlock_url($txt,$key='str'){  
    $txt = base64_decode(urldecode($txt));  
    $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";  
    $ch = $txt[0];  
    $nh = strpos($chars,$ch);  
    $mdKey = md5($key.$ch);  
    $mdKey = substr($mdKey,$nh%8, $nh%8+7);  
    $txt = substr($txt,1);  
    $tmp = '';  
    $i=0;$j=0; $k = 0;  
    for ($i=0; $i<strlen($txt); $i++) {  
        $k = $k == strlen($mdKey) ? 0 : $k;  
        $j = strpos($chars,$txt[$i])-$nh - ord($mdKey[$k++]);  
        while ($j<0) $j+=64;  
        $tmp .= $chars[$j];  
    }  
    return trim(base64_decode($tmp),$key);  
}  

?> 
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php  

function passport_encrypt($txt, $key = 'liiu') {   
    srand((double)microtime() * 1000000);   
    $encrypt_key = md5(rand(0, 32000));   
    $ctr = 0;   
    $tmp = '';   
    for($i = 0;$i < strlen($txt); $i++) {   
    $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;   
    $tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]);   
    }   
    return urlencode(base64_encode(passport_key($tmp, $key)));   
}   

function passport_decrypt($txt, $key = 'liiu') {   
    $txt = passport_key(base64_decode(urldecode($txt)), $key);   
    $tmp = '';   
    for($i = 0;$i < strlen($txt); $i++) {   
    $md5 = $txt[$i];   
    $tmp .= $txt[++$i] ^ $md5;   
    }   
    return $tmp;   
}   

function passport_key($txt, $encrypt_key) {   
    $encrypt_key = md5($encrypt_key);   
    $ctr = 0;   
    $tmp = '';   
    for($i = 0; $i < strlen($txt); $i++) {   
    $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;   
    $tmp .= $txt[$i] ^ $encrypt_key[$ctr++];   
    }   
    return $tmp;   
}   


$txt = "1";   
$key = "testkey";   
$encrypt = passport_encrypt($txt,$key);   
$decrypt = passport_decrypt($encrypt,$key);   

echo $encrypt."<br>";   
echo $decrypt."<br>";   

?>   
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php //非常给力的authcode加密函数,Discuz!经典代码(带详解) //函数authcode($string, $operation, $key, $expiry)中的$string:字符串,明文或密文;$operation:DECODE表示解密,其它表示加密;$key:密匙;$expiry:密文有效期。 function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙 $ckey_length = 4; // 密匙 $key = md5($key ? $key : $GLOBALS['discuz_auth_key']); // 密匙a会参与加解密 $keya = md5(substr($key, 0, 16)); // 密匙b会用来做数据完整性验证 $keyb = md5(substr($key, 16, 16)); // 密匙c用于变化生成的密文 $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''; // 参与运算的密匙 $cryptkey = $keya.md5($keya.$keyc); $key_length = strlen($cryptkey); // 明文,前10位用来保存时间戳,解密时验证数据有效性,10到26位用来保存$keyb(密匙b), //解密时会通过这个密匙验证数据完整性 // 如果是解码的话,会从第$ckey_length位开始,因为密文前$ckey_length位保存 动态密匙,以保证解密正确 $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 { // 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因 // 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码 return $keyc.str_replace('=', '', base64_encode($result)); } } $str = 'abcdef'; $key = 'www.helloweba.com'; echo authcode($str,'ENCODE',$key,0); //加密 $str = '56f4yER1DI2WTzWMqsfPpS9hwyoJnFP2MpC8SOhRrxO7BOk'; echo authcode($str,'DECODE',$key,0); //解密 ?> 
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php //函数encrypt($string,$operation,$key)中$string:需要加密解密的字符串;$operation:判断是加密还是解密,E表示加密,D表示解密;$key:密匙。 function encrypt($string,$operation,$key=''){ $key=md5($key); $key_length=strlen($key); $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string; $string_length=strlen($string); $rndkey=$box=array(); $result=''; for($i=0;$i<=255;$i++){ $rndkey[$i]=ord($key[$i%$key_length]); $box[$i]=$i; } 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=='D'){ if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8)){ return substr($result,8); }else{ return''; } }else{ return str_replace('=','',base64_encode($result)); } } $str = 'abc'; $key = 'www.helloweba.com'; $token = encrypt($str, 'E', $key); echo '加密:'.encrypt($str, 'E', $key); echo '解密:'.encrypt($str, 'D', $key); ?> 

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/166656.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
php中常用的Rc4/Des/AuthCode可逆加密函数
首先是AuthCode可逆加密函数,在dz论坛等各大程序的数据传输和登陆验证都有用到。
V站CEO-西顾
2018/06/10
1.4K0
介绍三种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
5580
经典的PHP加密解密算法
项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理。 最常见的应用在用户登录以及一些API数据交换的场景。
用户8099761
2023/05/10
1.9K0
记录下几种php加密算法
偶然间在别人博客发现的,感觉挺实用就给搬了过来 <?php /** * rc4,解密方法直接再一次加密就是解密 * @param [type] $data 要加密的数据 * @param
用户8099761
2023/05/11
3240
记录下几种php加密算法
经典加密解密函数
<?php /** * 加密解密函数 * @param string $string 明文 或 密文 * @param string $operation DECODE 解密 | EN
joshua317
2018/04/16
7150
PHP常用函数 Discuz!加解密函数
近期项目进行到了对数据的加解密,生成_token,增加授权认证,找到了比较安全且使用范围比较广的Discuz!加解密函数,分享一下:
Meng小羽
2019/12/23
8260
康盛(discuz )牛逼的PHP加解密算法函数
  康盛的 authcode 函数很牛叉,是一个具有有效期的加解密函数,同一个字符每次加密所产生的结果都是不一致的,并且可以自定义设置过期时间。
那一叶随风
2018/08/22
1.6K0
Discuz用户登录身份标识authcode函数
php /** * $string 明文或密文 * $operation 加密ENCODE或解密DECODE * $key 密钥 * $expiry 密钥有效期 */ function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙 // 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难
苦咖啡
2018/04/28
2.2K0
PHP加密解密算法
PHP的加密解密函数。还不错 /** * 加密函数 * [url=home.php?mod=space&uid=952169]@Param[/url] mixed $txt 需要加密的数据
用户8099761
2023/05/11
1.6K0
PHP的加密解密字符串函数建议收藏
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/120746.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/15
9910
php对称加密
这几天在逛博客的时候看到个一个比较强的加解密模块,于是分享给大家。 同一个字符串,每次加密出来的结果都是不同的,而且还可以设定加密后的数据的有效时间,实在是太棒了,
天方
2022/08/30
1.7K0
Freebuf漏斗专栏之代码审计| Axublog前台SQL注入到后台GetShell
0×00 背景 看了cnvd上有师傅发了Axublog 的漏洞,便对该源码进行分析和漏洞复现,在漏洞复现过程发现可以将这些漏洞组合利用从而通过前台SQL注入与后台任意文件上传可以轻松获取GetShell,当然该源码还存在许多安全问题,本篇未涉及。 源码下载地址:http://pic.axublog.com/axublog1.0.6install.rar 0×01 前台SQL注入 源码版本:Axublog axublog v1.0.6 漏洞位置:hit.php 漏洞链接:h
奶糖味的代言
2018/04/16
1K0
Freebuf漏斗专栏之代码审计| Axublog前台SQL注入到后台GetShell
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.3K0
2018,我要Axublog。
0x00 背景 看了cnvd上有师傅发了Axublog 的漏洞,便对该源码进行分析和漏洞复现,在漏洞复现过程发现可以将这些漏洞组合利用从而通过前台SQL注入与后台任意文件上传可以轻松获取GetShell,当然该源码还存在许多安全问题,本篇未涉及。 源码下载地址:http://pic.axublog.com/axublog1.0.6install.rar 0x01 前台SQL注入 源码版本:Axublog axublog v1.0.6 漏洞位置:hit.php 漏洞链接:http://www.cnv
漏斗社区
2018/03/28
7300
2018,我要Axublog。
冷场了吗?我带着phpcms9.6.2 注入来救场了
0x00 背景 最近做代码审计的时候发现phpcms 有更新,现在漏洞详情基本不公开,想要知道漏洞的利用方法只能自己审计了,通常可进行新旧版本的代码比较了,来定位旧版本的漏洞位置,便下载了phpcms 9.6.3与phpcms 9.6.1 和phpcms 9.6.2的源码进行比较和审计,发现phpcms 9.6.2 中存在任意文件下载补丁绕过和前台SQL注入,便撰写了本文做个记录,期待和师傅们的各种交流和讨论。 0x01 任意文件下载补丁绕过 对比phpcms 9.6.2 版本与phpcms 9.6.1
漏斗社区
2018/03/28
1.7K0
冷场了吗?我带着phpcms9.6.2 注入来救场了
Discuz_X authkey安全性漏洞分析
2017年8月1日,Discuz!发布了X3.4版本,此次更新中修复了authkey生成算法的安全性漏洞,通过authkey安全性漏洞,我们可以获得authkey。系统中逻辑大量使用authkey以及authcode算法,通过该漏洞可导致一系列安全问题:邮箱校验的hash参数被破解,导致任意用户绑定邮箱可被修改等… 2017年8月22日,360cert团队发布了对该补丁的分析,我们对整个漏洞进行了进一步分析,对漏洞的部分利用方式进行了探究。
LoRexxar
2023/02/21
8770
Discuz_X authkey安全性漏洞分析
URL参数加密
php function valEncrypt($value, $key) { $encrypt_key = md5(rand(0, 32000)); $ctr = 0; $t
苦咖啡
2018/05/08
1.9K0
PHP 学习筆記[1] —— ThinkPHP 公共函数整理
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/53733707
泥豆芽儿 MT
2018/09/11
8860
lnmp - 登录技术方案设计与实现
登录功能是对于每个动态系统来说都是非常基础的功能,用以区别用户身份、和对应的权限和信息,设计出一套安全的登录方案尤为重要,接下来我介绍一下常见的认证机制的登录设计方案。
stark张宇
2024/09/17
1542
Yii框架应用程序整合Ucenter实现同步注册、登录和退出等
如今很多网站都要整合论坛程序,而康盛的Discuz系列产品往往是首选。然后就有了整合用户的需要,康盛提供了Ucenter架构,方便对不同的应用程序进行单点登录整合。 进来我尝试将ucenter整合到Yii网站中,获得了成功,虽然登录同步程序不是很妥当,基本使用没有问题了。我将继续改进。下面说说步骤: 下载安装ucenter和discuz,我使用的是ucenter1.6和discuz7.2,由于7.2自带的uc_client是旧版本,所以需要覆盖一下1.6版本。 复制一份uc_client文件夹到 prote
joshua317
2018/04/16
1.8K0
相关推荐
php中常用的Rc4/Des/AuthCode可逆加密函数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文