经典的PHP加密解密函数Authcode()修复代码

经典的PHP加密解密函数Authcode()修复代码
验证码的功能是用许多人。这个函数是discuz程序,用来加密和解密字符串,设置键(key)和到期时间,也可以用在很多次。原来的函数代码可以生成一个+,/,/,这样的性格,导致URL传值传递,导致它无法解密。火端网络稍加修改,替换成其他字符这些字符,然后把它解密,所以它是完美的!

代码如下:

功能验证码($字符串操作= 'decode美元,美元关键=,= 0美元到期){

如果(= = 'decode操作美元){
$字符串str_replace({ }+,$字符串);
美元str_replace字符串({黑} ',' ',为字符串);
美元str_replace字符串({ },为字符串);
}
ckey_length = 4美元;
美元关键= MD5($美元关键关键:'livcmsencryption);
$科亚= MD5(substr($,0, 16));
$键盘= MD5(substr($,16, 16));
keyc = $($美元ckey_length操作= = 'decode'substr($ 0,$ ckey_length字符串substr():MD5(瞬时),($ ckey_length))):;
cryptkey = $(美元keya.md5科亚keyc美元美元。);
key_length美元= strlen($ cryptkey);
$字符串操作= = 'decode'base64_decode美元(substr($字符串,ckey_length美元)):sprintf(% 010d,到期美元+时间($期满):(0)。函数MD5($字符串。$键盘),0, 16)。为字符串;
string_length美元= strlen($字符串);
结果=;
框=范围(0, 255);
rndkey美元=阵();
($ i = 0;$ i < 255;$ + +){
{ } =我rndkey美元美元ORD($ cryptkey { $ % $我key_length });
}
对于($ = $ I = 0;$ i < 256;$ + +){
J =(J + $盒{ $我} + $ rndkey { $我})% 256;
$ = $;
$;
$;
}
为($ = $ J = $我= 0;美元美元美元我<< string_length;i++){
$ =($ + 1)% 256;
$ =($ J $ +盒{ })% 256;
$ $ =;
$;
$;
由于美元= CHR(ORD($字符串{我})^(合箱{(合箱{一} +美元美元箱{ $ J })% 256 }));
}
如果(= = 'decode操作美元){
如果((substr($,0, 10)= = 0 | | substr($,0, 10)-时间(孔)> 0)($,10, 16)= substr(MD5(substr($,26)美元的键盘),0, 16)){

返回substr($,26);
{人}
返回' ';
}
{人}
美国贸易代表办公室= $(美元keyc.str_replace ' = ',' ',base64_encode($结果));
美国贸易代表办公室str_replace美元=(+,{ },为美国贸易代表办公室);
美国贸易代表办公室= str_replace美元(',' {黑},为美国贸易代表办公室);
美国贸易代表办公室= str_replace美元(/、{ },为美国贸易代表办公室);
返回办公室;
}
}

tag:加密解密函数代码经典电脑软件

相关内容