setKey($testKey); $cipher->disablePadding(); $result = $cipher->decrypt($secondDecode); // 验证解密结果是否合理(检查是否包含可见字符) if ($result !== false && !empty($result)) { // 尝试移除填充 $textLength = strlen($result); $pad = ord($result[$textLength - 1]); // 填充值应该在1-8之间 if ($pad >= 1 && $pad <= 8) { $unpadded = substr($result, 0, -1 * $pad); // 检查是否像URL参数(包含=或&) if (strpos($unpadded, '=') !== false || strpos($unpadded, '&') !== false) { $decrypted = $unpadded; $validKey = $testKey; echo " ✓ 找到正确密钥!\n"; break; } } } } if ($decrypted === false || empty($decrypted)) { die("\n错误: 所有密钥都无法正确解密\n"); } $desKey = $validKey; echo " 解密成功,长度: " . strlen($decrypted) . "\n"; echo " 解密内容: {$decrypted}\n\n"; // 解析参数 echo "步骤4: 解析参数\n"; parse_str($decrypted, $params); echo " 解析结果:\n"; foreach ($params as $key => $value) { echo " {$key} = {$value}\n"; } echo "\n========================================\n"; echo "✅ 解密成功!\n"; echo "========================================\n"; } catch (\Exception $e) { echo "\n========================================\n"; echo "❌ 解密失败!\n"; echo "========================================\n"; echo "错误信息: " . $e->getMessage() . "\n"; echo "错误行号: " . $e->getLine() . "\n"; echo "错误文件: " . $e->getFile() . "\n"; }