php字符串常用算法--字符串加密解密

<pre class="brush:php;toolbar:false">/** *加密、解密字符串 * *@globalstring$db_hash *@globalarray$pwServer *@param$string待处理字符串 *@param$action操作,ENCODE|DECODE *@returnstring */ functionStrCode($string,$action=&#39;ENCODE&#39;){ $action!=&#39;ENCODE&#39;&amp;&amp;$string=base64_decode($string); $code=&#39;&#39;; $key=substr(md5($_SERVER[&#39;HTTP_USER_AGENT&#39;]),8,18); $keyLen=strlen($key); $strLen=strlen($string); for($i=0;$i&lt;$strLen;$i++){ $k=$i%$keyLen; $code.=$string[$i]^$key[$k]; } return($action!=&#39;DECODE&#39;?base64_encode($code):$code); }</pre><p>/*</p><p>* ENCODE为加密,DECODE为解密</p><p>* 加密就是把字符串的每个字符进行^运算,生成新字符串再base64一下返回。</p><p>* 用来进行^运算的字符串通过MD5一些全局变量再substr获得。</p><p>*</p><p>* 这里注意,^运算必须是2个长度相同的字符串才不会产生掉串,</p><p>* 例如:&#39;asd&#39;^&#39;123&#39; == &#39;PAW&#39;,但是&#39;asd&#39;^&#39;123456&#39;还是等于&#39;PAW&#39;,多余的字符掉了,</p><p>* 并且不知道传入的字符串到底是多长,因此生成^运算的字符串也不知道要生成多长,</p><p>* 这里用循环的方式进行处理,即^运算的字符串可以是任意长度,然后要加密的字符串用第一个字符与^运算的字符串的第一个字符进行与运算,</p><p>* 以此类推,当^运算的字符长度不够时就循环使用,上边的for循环里边的取%运算就是这个道理。</p><p>*/</p>
RangeTime:0.003933s
RangeMem:196.96 KB
返回顶部 留言