PHP加解密函数支持过期时间设置

      发布在:后端技术      评论:0 条评论
<p>PHP加解密函数,最近在看某鱼框架源码的时候发现了利用PHP加解密函数加密密码,刚好可以应付有些客户的要求需要。</p><pre style="background-color:#262e37;color:#ffffff;font-family:&#39;Consolas&#39;;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:&#39;宋体&#39;;">系统加密方法<br/></span><span style="color:#486460;background-color:#222930;font-family:&#39;宋体&#39;;"> </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:&#39;宋体&#39;;">要加密的字符串<br/></span><span style="color:#486460;background-color:#222930;font-family:&#39;宋体&#39;;"> </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 &nbsp;</span><span style="color:#486460;background-color:#222930;font-family:&#39;宋体&#39;;">加密密钥<br/></span><span style="color:#486460;background-color:#222930;font-family:&#39;宋体&#39;;"> </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 &nbsp;</span><span style="color:#486460;background-color:#222930;font-family:&#39;宋体&#39;;">过期时间 </span><span style="color:#486460;background-color:#222930;">(</span><span style="color:#486460;background-color:#222930;font-family:&#39;宋体&#39;;">单位</span><span style="color:#486460;background-color:#222930;">:</span><span style="color:#486460;background-color:#222930;font-family:&#39;宋体&#39;;">秒</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;">&#39;&#39;</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;">&lt; </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;">&#39;%010d&#39;</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;">&lt; </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;">&#39;=&#39;</span>, <span style="color:#e6db74;">&#39;&#39;</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:&#39;宋体&#39;;">系统解密方法<br/></span><span style="color:#486460;background-color:#222930;font-family:&#39;宋体&#39;;"> </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:&#39;宋体&#39;;">要解密的字符串 (必须是</span><span style="color:#486460;background-color:#222930;">think_encrypt</span><span style="color:#486460;background-color:#222930;font-family:&#39;宋体&#39;;">方法加密的字符串)<br/></span><span style="color:#486460;background-color:#222930;font-family:&#39;宋体&#39;;"> </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 &nbsp;</span><span style="color:#486460;background-color:#222930;font-family:&#39;宋体&#39;;">加密密钥<br/></span><span style="color:#486460;background-color:#222930;font-family:&#39;宋体&#39;;"> </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;">&gt; </span><span style="color:#ae81ff;">0 </span><span style="color:#f92672;">&amp;&amp; </span>$expire <span style="color:#f92672;">&lt; </span><span style="color:#66d9ef;font-style:italic;">time</span>()) {<br/> <span style="color:#f92672;">return </span><span style="color:#e6db74;">&#39;&#39;</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;">&#39;&#39;</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;">&lt; </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;">&lt; </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;">&lt; </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>
相关文章
热门推荐