PHP加密和解密字符串示例

PHP加密和解密字符串示例
一个比较经典的php加密解密函数代码,大家共享。一般的加密解密原理是基于一定的加密解密算法,并将密钥添加到算法中,最后得到加密解密结果。

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

动态密钥长度,同一明文会产生不同的密文,是依靠动态密钥。

ckey_length = 4美元;



美元关键= MD5(美元美元美元关键关键:{ 'discuz_auth_key全局'});

密钥将参与加密和解密。

$科亚= MD5(substr($,0, 16));

该键将用于进行数据完整性验证。

$键盘= MD5(substr($,16, 16));

C/密文生成变化的关键

keyc = $($美元ckey_length操作= = 'decode'substr($字符串,0,ckey_length美元):

substr(MD5(瞬时()),至ckey_length)):;

参与键的操作

cryptkey = $(美元keya.md5科亚keyc美元美元。);

key_length美元= strlen($ cryptkey);

/ /明文,10节省时间戳之前,验证数据加密的有效性,10到26位来存储键盘美元(关键B),

何时会通过验证数据完整性来解密密钥

如果是 / /解码,将开始从ckey_length美元,因为之前ckey_length美元拯救动态密钥的密文,确保正确的解密

$字符串操作= = 'decode'base64_decode美元(substr($字符串,ckey_length美元)):

sprintf(% 010d美元美元,到期届满+时间()():0)。Substr(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)

substr($,10, 16)= substr(MD5(substr($,26)美元的键盘),0, 16)){

返回substr($,26);

{人}

返回' ';
}

{人}

密钥存储在动态密文中,这就是同一明文、密文解密可以产生不同的原因

/ /因为加密的密文,可能是一些特殊的字符,复制过程可能会丢失,所以使用Base64编码

返回的keyc.str_replace(' = ',' ',base64_encode($结果));

}

}

希望本文能对PHP程序设计有所帮助。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部