详细讲解PHP加解密字符串函数配合源代码下载
有时我们需要使用PHP对项目中的特定信息进行加密,即通过加密算法生成一个加密字符串,这个加密字符串可以通过解密算法进行解密,方便程序对解密后的信息进行处理。
先给大家看看效果图。感兴趣的朋友将继续阅读全文。
下载效果演示源代码。
我收集了一些经典的PHP加解密函数代码,分享给大家。一般来说,加解密的原理是通过一定的加解密算法将密钥加入到算法中,最终得到加解密结果。
1.非常强大的authcode加密功能,丢弃!经典代码(详细说明):
函数authcode ($ string,$ operation=' decode ',$ key=' ',$ expire=0){//动态密钥长度,相同的明文会生成不同的密文,这取决于动态密钥$ ckey _ length=4;//key $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)):“”;//参与操作的密钥$ crypt key=$ keya . MD5($ keya . key k);$ key _ length=strlen($ crypt key);//明文中,前10位用于保存时间戳,解密时验证数据有效性。10到26位用于节省$keyb。//此密钥将用于在解密过程中验证数据完整性。//如果是解码,会从$ckey_length位开始,因为动态密钥保存在密文的第一个$ckey_length位,保证解密正确$ string=$。base64_decode(substr($string,$ ckey _ length)): sprintf('0d',$过期?$到期时间(): 0)。substr(md5($string。$keyb),0,16)。$ string$ string _ length=strlen($ string);$ result=$box=范围(0,255);$ rnd key=array();//为($i=0)生成密钥簿;$ i=255$ I){ $ rnd key[$ I]=order($ crypt key[$ I % $ key _ length]);}//使用固定算法打乱密钥本,增加随机性看似很复杂,实际上对于($j=$i=0)不会增加密文的强度;$ i 256$ I){ $ j=($ j $ box[$ I]$ rnd key[$ I])% 256;$ tmp=$ box[$ I];$ box[$ I]=$ box[$ j];$ box[$ j]=$ tmp;}//核心加解密部分为($ a=$ j=$ I=0;$ i $字符串_长度;$ I){ $ a=($ a 1)% 256;$ j=($ j $ box[$ a])% 256;$ tmp=$ box[$ a];$ box[$ a]=$ box[$ j];$ box[$ j]=$ tmp;//将从密钥簿中获得的密钥进行异或运算,然后将其转换为字符$ result。=chr(order($ 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)) {返回substr($result,26);} else { return“”;}} else {//将动态密钥保存在密文中,这就是为什么产生不同的密文后可以解密相同的明文。//因为加密的密文可能是一些特殊字符,复制过程可能会丢失,所以return $ key . str _ replace('=','',base64 _ encode ($ result))用base64编码;} } $ authcode中的字符串($string,$ operation,$ key,$ expiry):字符串、明文或密文;$ operation: decode表示解密,其他表示加密;$ key:key;$ expiry:密文的有效期。
用法:
$ str=' abcdef$ key=' www . helloweba.com ';echo authcode($str,' ENCODE ',$key,0);//encrypt $ str=' 56f 4 yer1 i2wtzwmqsfpps 9 hwyojnfp 2 MPC 8 sohrxo 7 bok ';echo authcode($str,' DECODE ',$key,0);//解密2。加密和解密功能encrypt():
函数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);$ rnd键=$ box=array();$ result=for($ I=0;$ I=255 $ I){ $ rnd key[$ I]=order($ key[$ I % $ key _ length]);$ box[$ I]=$ I;} for($ j=$ I=0;$ i256 $ I){ $ j=($ j $ box[$ I]$ rnd key[$ I])% 6;$ tmp=$ box[$ I];$ box[$ I]=$ box[$ j];$ box[$ j]=$ tmp;} for($ a=$ j=$ I=0;一美元字符串_长度;$ I){ $ a=($ a 1)% 6;$ j=($ j $ box[$ a])% 6;$ tmp=$ box[$ a];$ box[$ a]=$ box[$ j];$ box[$ j]=$ tmp;$结果。=chr(ord($string[$i])^($box[($box[$a]$盒[$ j])% 6]);} 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));} } 函数加密($string,$operation,$key)中$string:需要加密解密的字符串;$操作:判断是加密还是解密,E表示加密,D表示解密;$key:密匙。
用法:
$ str=' abc$ key=' www。helloweba。com ';$token=encrypt($str,' E ',$ key);"回声"加密:'.加密($str、' E '、$ key);"回声"解密:'.加密($str、' D '、$ key);以上内容是小编给大家介绍的服务器端编程语言(专业超文本预处理器的缩写)加密解密字符串函数附源码下载的全部叙述,希望大家喜欢。
版权声明:详细讲解PHP加解密字符串函数配合源代码下载是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

















