你好,我遇到一个authcode加密你不知道谁对你好怎么解我有源码

求老师PHP解密我要疯了,PHP加密,还用authcode,远程调用的TXT授权
[问题点数:40分]
求老师PHP解密我要疯了,PHP加密,还用authcode,远程调用的TXT授权
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2016年5月 PHP大版内专家分月排行榜第三2016年4月 PHP大版内专家分月排行榜第三2015年12月 PHP大版内专家分月排行榜第三2015年9月 PHP大版内专家分月排行榜第三2015年5月 PHP大版内专家分月排行榜第三2014年5月 PHP大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php。
这篇文章主要介绍了经典PHP加密解密函数Authcode()修复版代码,需要的朋友可以参考下
Authcode这个函数很多人都使用,这函数来自Discuz程序,用于加密解密字符串,可以设置钥匙(key)和过期时间,在很多时候都用得着。原版的函数代码可能会生成+、/、&这样的字符,导致通过URL传值取回时被转义,导致无法解密。火端网络稍加修改,把这几个字符替换成其它字符,解密时再替换回去,这样就完美了!
代码如下:
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0){
if($operation == 'DECODE') {
$string = str_replace('[a]','+',$string);
$string = str_replace('[b]','&',$string);
$string = str_replace('[c]','/',$string);
$ckey_length = 4;
$key = md5($key ? $key : 'livcmsencryption ');
$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_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] = $
for($a = $j = $i = 0; $i & $string_ $i++) {
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $
$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);
return '';
$ustr = $keyc.str_replace('=', '', base64_encode($result));
$ustr = str_replace('+','[a]',$ustr);
$ustr = str_replace('&','[b]',$ustr);
$ustr = str_replace('/','[c]',$ustr);
Copyright &
All Rights Reserved &&&&&&PHP加密解密函数authcode的具体使用方法分析
PHP加密解密函数authcode的具体使用方法分析
| 时间: 21:49:15 | 阅读数:
[导读] PHP加密解密函数authcode的具体示例代码如下: 参数解释 $string:明文或密文 $operation:DECODE表示解密,其它表示加密 $key:密匙 $expiry:密文有效期
PHP加密解密函数authcode的具体示例代码如下:
//&参数解释& &
//&$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))&:&'';& &
//PHP加密解密函数authcode参与运算的密匙& &
$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_length&=&strlen($string);& &
$result&=&'';& &
$box&=&range(0,&255);& &
$rndkey&=&array();& &
//PHP加密解密函数authcode产生密匙簿& &
for($i&=&0;&$i&=&255;&$i++)&{& &
$rndkey[$i]&=&ord($cryptkey[$i&%&$key_length]);& &
//&用固定的算法,打乱密匙簿,增加随机性,好像很复杂,
实际上对并不会增加密文的强度& &
for($j&=&$i&=&0;&$i&&;&$i++)&{& &
$j&=&($j&+&$box[$i]&+&$rndkey[$i])&%&256;& &
$tmp&=&$box[$i];& &
$box[$i]&=&$box[$j];& &
$box[$j]&=&$& &
//PHP加密解密函数authcode核心加解密部分& &
for($a&=&$j&=&$i&=&0;&$i&&$string_&$i++)&{& &
$a&=&($a&+&1)&%&256;& &
$j&=&($j&+&$box[$a])&%&256;& &
$tmp&=&$box[$a];& &
$box[$a]&=&$box[$j];& &
$box[$j]&=&$& &
//&PHP加密解密函数authcode从密匙簿得出密匙进行异或,再转成字符& &
$result&.=&chr(ord($string[$i])&^&(
$box[($box[$a]&+&$box[$j])&%&256]));& &
if($operation&==&'DECODE')&{& &
//&substr($result,&0,&10)&==&0&验证数据有效性& &
//&substr($result,&0,&10)&-&time()&&0&验证数据有效性& &
//&substr($result,&10,&16)&==&substr(md5(substr
($result,&26).$keyb),&0,&16)&验证数据完整性& &
//&验证数据有效性,请看未加密明文的格式& &
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&{& &
//PHP加密解密函数authcode把动态密匙保存在密文里,这也是为什么同样的明文,
生产不同密文后能解密的原因& &
//&因为加密后的密文可能是一些特殊字符,
复制过程可能会丢失,所以用base64编码& &
return&$keyc.str_replace('=',&'',&
base64_encode($result));& &
}&&以上代码就是PHP加密解密函数authcode的具体使用方法,希望大家能够通过这篇文章介绍的内容初步掌握这个函数的含义。
手机扫描下方二维码,关注php100官方微信。
同步官网每日更新,为您带来随时随地的资讯与技术信息。更有不定期的互动抽奖活动,赢取实用贴心的小礼物。
除非特别声明,PHP100新闻均为原创或投稿报道,转载请注明作者及原文链接原文地址:
友情链接与合作伙伴
粤ICP备号-3我有一个ASP的源码,但是不知道后台的账号和密码!怎么办?_百度知道
我有一个ASP的源码,但是不知道后台的账号和密码!怎么办?
提问者采纳
一般asp网站数据库的密码是用MD5加密的,把密码字段解密就可以了,网上有解密的网址。
其他类似问题
为您推荐:
其他1条回答
首先找到数据库,找到管理员的表打开!然后把管理员用户名替换掉和把密码替换掉就可以了如果是MD5加密的你可去网上找下MD5的加密或者你看看你原来的密码能不能转换成明文不行只能替换
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 laravel5.2 auth 源码 的文章

 

随机推荐