本文來自:php5應用執行個體詳解:使用zend framework 與smarty構築真正的MVC模式應用。
作者:王志剛 朱蕾
<?php/* 一個簡易的加密類(可逆) * 靜態調用,不需執行個體化Crypt類 */class Crypt{/** *基礎加密,結合passport_key與key密鑰做加密 *@param txt : 明文待加密 *@param key :密鑰 *@return : 加密後的字串 */public static function passport_encrypt($txt,$key){$encrypt_key = md5(rand(0,32000));$ctr = 0;$tmp = '';for($i = 0;$i<strlen($txt);$i++){$ctr = ($ctr == strlen($encrypt_key) ?0:$ctr);$tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]);}return base64_encode(Crypt::passport_key($tmp,$key));}public static function passport_key($txt,$encrypt_key){$encrypt_key = md5($encrypt_key);$ctr = 0;$tmp = '';for($i = 0;$i < strlen($txt);$i++){$ctr = ($ctr == strlen($encrypt_key) ?0:$ctr);$tmp .= $txt[$i]^$encrypt_key[$ctr++];}return $tmp;}/** *解密,剝離密鑰 *@param txt : 待解密密文 *@param key :密鑰 *@return : 解密後的字串 */public static function passport_decrypt($txt,$key){$txt = Crypt::passport_key(base64_decode($txt),$key);$tmp = '';for($i = 0;$i<strlen($txt);$i++){$md5 = $txt[$i];$tmp.= $txt[++$i] ^ $md5;}return $tmp;}}$txt = "I will be backI";$key = "justfortest";$encrypt = Crypt::passport_encrypt($txt,$key);$decrypt = Crypt::passport_decrypt($encrypt,$key);echo "from :$txt <br/>";echo "key :$key <br/>";echo "encrypt:$encrypt <br/>";echo "decrypt:$decrypt <br/>";