public function bbbAction()
{
$str='cab';
echo "加密前:".$str;
$str=self::passport_encrypt($str);
echo "加密后:".$str;
$str=self::passport_decrypt($str);
echo "解密后:".$str;
$str='ccc1asddddddddddddddddddddddddddddddddddddddddddddd';
echo "加密前:".$str;
$str=self::passport_encrypt($str);
echo "加密后:".$str;
$str=self::passport_decrypt($str);
echo "解密后:".$str;
}
//--------------------------------------------------------------------------
/*
* 对字符串进行解密处理
* @param string 需要解密的密文
*/
public static function passport_decrypt($str)
{
$str = self::passport_key(base64_decode($str), \toprank\server\getConst::getConst('MD5KEY'));
$tmp = "";
if ((strlen($str) % 2) != 0) {
return $str;
}
for ($i = 0; $i < strlen($str); $i++) {
$md5 = $str[$i];
$tmp .= $str[++$i] ^ $md5;
}
return $tmp;
}
//--------------------------------------------------------------------------
/*
* 对字符串进行加密处理
* @param string 需要加密的内容
*/
public static function passport_encrypt($str)
{
srand((double) microtime() * 1122345);
$encrypt_key = md5(rand(0, 32000));
$ctr = 0;
$tmp = "";
for ($i = 0; $i < strlen($str); $i++) {
$ctr = ($ctr == strlen($encrypt_key) ? 0 : $ctr);
$tmp .= $encrypt_key[$ctr] . ($str[$i] ^ $encrypt_key[$ctr++]);
}
return base64_encode(self::passport_key($tmp, \toprank\server\getConst::getConst('MD5KEY')));
}
/*
* 辅助函数
*/
public static function passport_key($str, $encrypt_key)
{
$encrypt_key = md5($encrypt_key);
$ctr = 0;
$tmp = "";
for ($i = 0; $i < strlen($str); $i++) {
$ctr = ($ctr == strlen($encrypt_key) ? 0 : $ctr);
$tmp .= $str[$i] ^ $encrypt_key[$ctr++];
}
return $tmp;
}
|