<p>PHP加解密函数,最近在看某鱼框架源码的时候发现了利用PHP加解密函数加密密码,刚好可以应付有些客户的要求需要。</p><pre style="background-color:#262e37;color:#ffffff;font-family:'Consolas';font-size:11.3pt;"><span style="color:#486460;background-color:#222930;">/**<br/></span><span style="color:#486460;background-color:#222930;"> * </span><span style="color:#486460;background-color:#222930;font-family:'宋体';">系统加密方法<br/></span><span style="color:#486460;background-color:#222930;font-family:'宋体';"> </span><span style="color:#486460;background-color:#222930;">* </span><span style="color:#75715e;background-color:#222930;">@param </span><span style="color:#486460;background-color:#222930;">string $data </span><span style="color:#486460;background-color:#222930;font-family:'宋体';">要加密的字符串<br/></span><span style="color:#486460;background-color:#222930;font-family:'宋体';"> </span><span style="color:#486460;background-color:#222930;">* </span><span style="color:#75715e;background-color:#222930;">@param </span><span style="color:#486460;background-color:#222930;">string $key </span><span style="color:#486460;background-color:#222930;font-family:'宋体';">加密密钥<br/></span><span style="color:#486460;background-color:#222930;font-family:'宋体';"> </span><span style="color:#486460;background-color:#222930;">* </span><span style="color:#75715e;background-color:#222930;">@param </span><span style="color:#486460;background-color:#222930;">int $expire </span><span style="color:#486460;background-color:#222930;font-family:'宋体';">过期时间 </span><span style="color:#486460;background-color:#222930;">(</span><span style="color:#486460;background-color:#222930;font-family:'宋体';">单位</span><span style="color:#486460;background-color:#222930;">:</span><span style="color:#486460;background-color:#222930;font-family:'宋体';">秒</span><span style="color:#486460;background-color:#222930;">)<br/></span><span style="color:#486460;background-color:#222930;"> * </span><span style="color:#75715e;background-color:#222930;">@return </span><span style="color:#486460;background-color:#222930;">string<br/></span><span style="color:#486460;background-color:#222930;"> */</span><span style="color:#486460;"><br/></span><span style="color:#f92672;">function </span><span style="color:#a6e22e;">think_ucenter_encrypt</span>(<span style="color:#660000;">$data</span>, <span style="color:#660000;">$key</span>, <span style="color:#660000;">$expire </span><span style="color:#f92672;">= </span><span style="color:#ae81ff;">0</span>) {<br/> <span style="color:#660000;">$key </span><span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">md5</span>(<span style="color:#660000;">$key</span>);<br/> <span style="color:#660000;">$data </span><span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">base64_encode</span>(<span style="color:#660000;">$data</span>);<br/> $x <span style="color:#f92672;">= </span><span style="color:#ae81ff;">0</span>;<br/> $len <span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">strlen</span>(<span style="color:#660000;">$data</span>);<br/> $l <span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">strlen</span>(<span style="color:#660000;">$key</span>);<br/> $char <span style="color:#f92672;">= </span><span style="color:#e6db74;">''</span>;<br/> <span style="color:#f92672;">for </span>($i <span style="color:#f92672;">= </span><span style="color:#ae81ff;">0</span>; $i <span style="color:#f92672;">< </span>$len; $i<span style="color:#f92672;">++</span>) {<br/> <span style="color:#f92672;">if </span>($x <span style="color:#f92672;">== </span>$l) $x <span style="color:#f92672;">= </span><span style="color:#ae81ff;">0</span>;<br/> $char<span style="color:#f92672;">.= </span><span style="color:#66d9ef;font-style:italic;">substr</span>(<span style="color:#660000;">$key</span>, $x, <span style="color:#ae81ff;">1</span>);<br/> $x<span style="color:#f92672;">++</span>;<br/> }<br/> $str <span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">sprintf</span>(<span style="color:#e6db74;">'%010d'</span>, <span style="color:#660000;">$expire </span><span style="color:#f92672;">? </span><span style="color:#660000;">$expire </span><span style="color:#f92672;">+ </span><span style="color:#66d9ef;font-style:italic;">time</span>() <span style="color:#f92672;">: </span><span style="color:#ae81ff;">0</span>);<br/> <span style="color:#f92672;">for </span>($i <span style="color:#f92672;">= </span><span style="color:#ae81ff;">0</span>; $i <span style="color:#f92672;">< </span>$len; $i<span style="color:#f92672;">++</span>) {<br/> $str<span style="color:#f92672;">.= </span><span style="color:#66d9ef;font-style:italic;">chr</span>(<span style="color:#66d9ef;font-style:italic;">ord</span>(<span style="color:#66d9ef;font-style:italic;">substr</span>(<span style="color:#660000;">$data</span>, $i, <span style="color:#ae81ff;">1</span>)) <span style="color:#f92672;">+ </span>(<span style="color:#66d9ef;font-style:italic;">ord</span>(<span style="color:#66d9ef;font-style:italic;">substr</span>($char, $i, <span style="color:#ae81ff;">1</span>))) <span style="color:#f92672;">% </span><span style="color:#ae81ff;">256</span>);<br/> }<br/> <span style="color:#f92672;">return </span><span style="color:#66d9ef;font-style:italic;">str_replace</span>(<span style="color:#e6db74;">'='</span>, <span style="color:#e6db74;">''</span>, <span style="color:#66d9ef;font-style:italic;">base64_encode</span>($str));<br/>}<br/><span style="color:#486460;background-color:#222930;">/**<br/></span><span style="color:#486460;background-color:#222930;"> * </span><span style="color:#486460;background-color:#222930;font-family:'宋体';">系统解密方法<br/></span><span style="color:#486460;background-color:#222930;font-family:'宋体';"> </span><span style="color:#486460;background-color:#222930;">* </span><span style="color:#75715e;background-color:#222930;">@param </span><span style="color:#486460;background-color:#222930;">string $data </span><span style="color:#486460;background-color:#222930;font-family:'宋体';">要解密的字符串 (必须是</span><span style="color:#486460;background-color:#222930;">think_encrypt</span><span style="color:#486460;background-color:#222930;font-family:'宋体';">方法加密的字符串)<br/></span><span style="color:#486460;background-color:#222930;font-family:'宋体';"> </span><span style="color:#486460;background-color:#222930;">* </span><span style="color:#75715e;background-color:#222930;">@param </span><span style="color:#486460;background-color:#222930;">string $key </span><span style="color:#486460;background-color:#222930;font-family:'宋体';">加密密钥<br/></span><span style="color:#486460;background-color:#222930;font-family:'宋体';"> </span><span style="color:#486460;background-color:#222930;">* </span><span style="color:#75715e;background-color:#222930;">@return </span><span style="color:#486460;background-color:#222930;">string<br/></span><span style="color:#486460;background-color:#222930;"> */</span><span style="color:#486460;"><br/></span><span style="color:#f92672;">function </span><span style="color:#a6e22e;">think_ucenter_decrypt</span>(<span style="color:#660000;">$data</span>, <span style="color:#660000;">$key</span>) {<br/> <span style="color:#660000;">$key </span><span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">md5</span>(<span style="color:#660000;">$key</span>);<br/> $x <span style="color:#f92672;">= </span><span style="color:#ae81ff;">0</span>;<br/> <span style="color:#660000;">$data </span><span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">base64_decode</span>(<span style="color:#660000;">$data</span>);<br/> $expire <span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">substr</span>(<span style="color:#660000;">$data</span>, <span style="color:#ae81ff;">0</span>, <span style="color:#ae81ff;">10</span>);<br/> <span style="color:#660000;">$data </span><span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">substr</span>(<span style="color:#660000;">$data</span>, <span style="color:#ae81ff;">10</span>);<br/> <span style="color:#f92672;">if </span>($expire <span style="color:#f92672;">> </span><span style="color:#ae81ff;">0 </span><span style="color:#f92672;">&& </span>$expire <span style="color:#f92672;">< </span><span style="color:#66d9ef;font-style:italic;">time</span>()) {<br/> <span style="color:#f92672;">return </span><span style="color:#e6db74;">''</span>;<br/> }<br/> $len <span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">strlen</span>(<span style="color:#660000;">$data</span>);<br/> $l <span style="color:#f92672;">= </span><span style="color:#66d9ef;font-style:italic;">strlen</span>(<span style="color:#660000;">$key</span>);<br/> $char <span style="color:#f92672;">= </span>$str <span style="color:#f92672;">= </span><span style="color:#e6db74;">''</span>;<br/> <span style="color:#f92672;">for </span>($i <span style="color:#f92672;">= </span><span style="color:#ae81ff;">0</span>; $i <span style="color:#f92672;">< </span>$len; $i<span style="color:#f92672;">++</span>) {<br/> <span style="color:#f92672;">if </span>($x <span style="color:#f92672;">== </span>$l) $x <span style="color:#f92672;">= </span><span style="color:#ae81ff;">0</span>;<br/> $char<span style="color:#f92672;">.= </span><span style="color:#66d9ef;font-style:italic;">substr</span>(<span style="color:#660000;">$key</span>, $x, <span style="color:#ae81ff;">1</span>);<br/> $x<span style="color:#f92672;">++</span>;<br/> }<br/> <span style="color:#f92672;">for </span>($i <span style="color:#f92672;">= </span><span style="color:#ae81ff;">0</span>; $i <span style="color:#f92672;">< </span>$len; $i<span style="color:#f92672;">++</span>) {<br/> <span style="color:#f92672;">if </span>(<span style="color:#66d9ef;font-style:italic;">ord</span>(<span style="color:#66d9ef;font-style:italic;">substr</span>(<span style="color:#660000;">$data</span>, $i, <span style="color:#ae81ff;">1</span>)) <span style="color:#f92672;">< </span><span style="color:#66d9ef;font-style:italic;">ord</span>(<span style="color:#66d9ef;font-style:italic;">substr</span>($char, $i, <span style="color:#ae81ff;">1</span>))) {<br/> $str<span style="color:#f92672;">.= </span><span style="color:#66d9ef;font-style:italic;">chr</span>((<span style="color:#66d9ef;font-style:italic;">ord</span>(<span style="color:#66d9ef;font-style:italic;">substr</span>(<span style="color:#660000;">$data</span>, $i, <span style="color:#ae81ff;">1</span>)) <span style="color:#f92672;">+ </span><span style="color:#ae81ff;">256</span>) <span style="color:#f92672;">- </span><span style="color:#66d9ef;font-style:italic;">ord</span>(<span style="color:#66d9ef;font-style:italic;">substr</span>($char, $i, <span style="color:#ae81ff;">1</span>)));<br/> } <span style="color:#f92672;">else </span>{<br/> $str<span style="color:#f92672;">.= </span><span style="color:#66d9ef;font-style:italic;">chr</span>(<span style="color:#66d9ef;font-style:italic;">ord</span>(<span style="color:#66d9ef;font-style:italic;">substr</span>(<span style="color:#660000;">$data</span>, $i, <span style="color:#ae81ff;">1</span>)) <span style="color:#f92672;">- </span><span style="color:#66d9ef;font-style:italic;">ord</span>(<span style="color:#66d9ef;font-style:italic;">substr</span>($char, $i, <span style="color:#ae81ff;">1</span>)));<br/> }<br/> }<br/> <span style="color:#f92672;">return </span><span style="color:#66d9ef;font-style:italic;">base64_decode</span>($str);<br/>}</pre><p><br/></p>
相关文章