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


/** * 加密、解密字符串 * * @global string $db_hash * @global array $pwServer * @param $string 待處理字符串 * @param $action 操作,ENCODE|DECODE * @return string */
function StrCode($string, $action = 'ENCODE') { $action != 'ENCODE' && $string = base64_decode($string); $code = ''; $key = substr(md5($_SERVER['HTTP_USER_AGENT']), 8, 18); $keyLen = strlen($key); $strLen = strlen($string); for ($i = 0; $i < $strLen; $i++) { $k = $i % $keyLen; $code .= $string[$i] ^ $key[$k]; } return ($action != 'DECODE' ? base64_encode($code) : $code); } /* * ENCODE為加密,DECODE為解密 * 加密就是把字符串的每個字符進行^運算,生成新字符串再base64一下返回。 * 用來進行^運算的字符串通過MD5一些全局變量再substr獲得。 * * 這里注意,^運算必須是2個長度相同的字符串才不會產生掉串, * 例如:'asd'^'123' == 'PAW',但是'asd'^'123456'還是等於'PAW',多余的字符掉了, * 並且不知道傳入的字符串到底是多長,因此生成^運算的字符串也不知道要生成多長, * 這里用循環的方式進行處理,即^運算的字符串可以是任意長度,然后要加密的字符串用第一個字符與^運算的字符串的第一個字符進行與運算, * 以此類推,當^運算的字符長度不夠時就循環使用,上邊的for循環里邊的取%運算就是這個道理。 */

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM