利用PHP怎么封装一个字符串加密解密函数

  介绍

这期内容当中小编将会给大家带来有关利用PHP怎么封装一个字符串加密解密函数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

程序中经常使用的PHP加密解密字符串函数

代码如下:

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   ,函数名称:加密   ,函数作用:加密解密字符串   ,使用方法:   ,加密,,:加密(& # 39;str # 39; & # 39; e # 39;, & # 39; nowamagic& # 39;);   ,解密,,:加密(& # 39;被加密过的字符串& # 39;,& # 39;d # 39;, & # 39; nowamagic& # 39;);   ,参数说明:   ,string 美元;:需要加密解密的字符串   操作:美元,判断是加密还是解密:E:加密,D:解密   ,key 美元;:加密的钥匙(密匙);   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */,function 加密(字符串,操作,美元$关键=& # 39;& # 39;)   ,{   美元才能关键=md5(键);   美元才能key_length=strlen(键);   字符串=美元才能操作==& # 39;d # 39; ? base64_decode(字符串)美元:substr (md5(字符串。美元键),0,8)美元字符串;   美元才能string_length=strlen(字符串);   rndkey=美元才能盒=array ();   美元才能结果=& # 39;& # 39;;   ,,(i=0; i<美元=255;美元我+ +)   {才能   ,,rndkey美元($ i)=奥德($关键[我key_length美元]);   ,,美元($ i)=$我盒;   ,,}   ,,(j=$ i=0; i<美元;256;美元我+ +)   {才能   ,,$ j=($ j +盒子[我]美元+ rndkey美元[$ i]) % 256;   ,,tmp=美元($ i)盒;   ,,美元盒($ i)=$盒[j]美元;   ,,美元[j]美元=$ tmp盒;   ,,}   的才能($=$ j=$ i=0; i<美元;string_length美元;美元我+ +)   {才能   ,,a=美元($ + 1)% 256;   ,,$ j=(j +箱美元(美元)% 256;   ,,tmp=美元[美元]盒;   ,,美元盒[美元]=$盒[j]美元;   ,,美元[j]美元=$ tmp盒;   ,才能结果。美元=科(奥德($ string ($ i)) ^($箱[(盒子[美元]+箱美元[j]美元)% 256]));   ,,}   如果才能(美元操作==& # 39;d # 39;)   {才能   ,,如果(substr(因此,美元0,8)==substr (md5 (substr(因此,美元8)。$键),0,8))   ,,{   ,,,return  substr(因此,美元8);   ,,}   其他的,,   ,,{   ,,,返回# 39;& # 39;;   ,,}   ,,}   其他的才能   {才能   ,,return  str_replace (& # 39;=& # 39; & # 39; & # 39;, base64_encode(结果)美元);   ,,}   以前,}

使用方法:

id 美元;=,132;   ,   token 美元;=,加密($ id, & # 39; e # 39;,, & # 39;一个# 39;);   ,   echo  & # 39;加密:& # 39;.encrypt ($ id, & # 39; e # 39;,, & # 39;一个# 39;);   echo  & # 39; & lt; br /祝辞;& # 39;;   ,   echo  & # 39;解密:& # 39;.encrypt(令牌,美元,& # 39;d # 39;,, & # 39;一个# 39;);

<强>非常给力的验证码加密函数强,康盛创想!经典代码(带详解):

function 验证码(字符串,美元,美元operation =, & # 39;解码# 39;,,key 美元;=,& # 39;& # 39;,,expiry 美元;=,0),{,,//,才能动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙,,   时间=美元才能ckey_length  4,,,   ,,,,//才能,密匙,,   美元才能key =, md5 (key 美元;?,key 美元;:,全局美元[& # 39;discuz_auth_key& # 39;]),,,   ,,,,//才能,密匙一个会参与加解密,,   美元才能keya =, md5 (substr(美元关键,,0,,16)),,,//才能,密匙b会用来做数据完整性验证,,   keyb 美元;才能=,md5 (substr(键,美元,16日,16)),,,//才能,密匙c用于变化生成的密文,,   时间=美元才能keyc  ckey_length 美元;?,(operation 美元;==,& # 39;解码# 39;,?,substr(字符串,美元,0,,ckey_length美元):   substr (md5(()),至ckey_length美元)),:,& # 39;& # 39;,,,//才能,参与运算的密匙,,   时间=美元才能cryptkey 美元keya.md5 (keya。keyc美元);,,   时间=美元才能key_length  strlen ($ cryptkey);,,//,才能明文,前10位用来保存时间戳,解密时验证数据有效性,10到26位用来保存美元keyb(密匙b),,//解密时会通过这个密匙验证数据完整性,,//才能,如果是解码的话,会从第$ ckey_length位开始,因为密文前美元ckey_length位保存,动态密匙,以保证解密正确,,   时间=美元才能string  operation 美元;==,& # 39;解码# 39;,?,base64_decode (substr ($ string, ckey_length美元)),:,   sprintf (& # 39; % 010 d # 39;,, expiry 美元;?,expiry 美元;+,时间(),:,0).substr (md5(字符串。keyb美元),0,,16)。$ string;,,   时间=美元才能string_length  strlen ($ string);,,   时间=美元才能result  & # 39; & # 39;,,,   时间=美元才能box 范围(0,255);,,   时间=美元才能rndkey 数组();,,//才能,产生密匙簿,,   ,,($小姐:=,0;,美元小姐:& lt;=, 255;,我+ +美元),{,,   ,,,rndkey美元($ i),=,奥德(cryptkey美元(美元小姐:%,$ key_length]),,,   ,,},//才能,用固定的算法,打乱密匙簿,增加随机性,好像很复杂,实际上对并不会增加密文的强度,,   ,,(小姐:美元$ j =,=, 0;,美元小姐:& lt;, 256;,我+ +美元),{,,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

利用PHP怎么封装一个字符串加密解密函数