/** +---------------------------------------------------------- * 解密字符串 * +---------------------------------------------------------- * @access static +---------------------------------------------------------- * @param string $str 字符串 * @param string $key 加密key +---------------------------------------------------------- * @return string +---------------------------------------------------------- * @throws ThinkExecption +---------------------------------------------------------- */ function decrypt($str, $key) { if ($str == "") { return ""; } $v = Xxtea::str2long($str, false); $k = Xxtea::str2long($key, false); $n = count($v) - 1; $z = $v[$n]; $y = $v[0]; $delta = 0x9e3779b9; $q = floor(6 + 52 / ($n + 1)); $sum = Xxtea::int32($q * $delta); while ($sum != 0) { $e = $sum >> 2 & 3; for ($p = $n; $p > 0; $p--) { $z = $v[$p - 1]; $mx = Xxtea::int32(($z >> 5 & 0x7ffffff ^ $y << 2) + ($y >> 3 & 0x1fffffff ^ $z << 4)) ^ Xxtea::int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z)); $y = $v[$p] = Xxtea::int32($v[$p] - $mx); } $z = $v[$n]; $mx = Xxtea::int32(($z >> 5 & 0x7ffffff ^ $y << 2) + ($y >> 3 & 0x1fffffff ^ $z << 4)) ^ Xxtea::int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z)); $y = $v[0] = Xxtea::int32($v[0] - $mx); $sum = Xxtea::int32($sum - $delta); } return Xxtea::long2str($v, true); }