php采集CryptoJS加密内容进行解密
2024-02-20 / PHP / 335 次围观 / 0 次吐槽 /PHP
<?php
// GET传参数
if (isset($_GET['url'])) {
$url = $_GET['url'];
// 验证URL是否有效
if (filter_var($url, FILTER_VALIDATE_URL) && substr($url, 0, 8) === "https://") {
// 初始化cURL会话
$ch = curl_init($url);
// 设置cURL选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回结果而不是直接输出
curl_setopt($ch, CURLOPT_HEADER, false); // 不需要头部信息
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 不验证SSL证书
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 不验证SSL证书
// 执行cURL请求
$result = curl_exec($ch);
// 错误处理
if (curl_errno($ch)) {
die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));
}
// 关闭cURL资源,并释放系统资源
curl_close($ch);
// 使用正则表达式匹配内容
$pattern = "/html\\(z\\(\"(.*?)\",\"(.*?)\",\"(.*?)\"\\)\\)/";
preg_match($pattern, $result, $matches);
if (!empty($matches)) {
// 将匹配到的值赋给变量
$encryptedData = $matches[1];
$key = $matches[2];
$iv = $matches[3];
// 解密
$decryptedData = openssl_decrypt(
base64_decode($encryptedData), // 假定传输经过了base64_encode,所以这里需要base64_decode
'AES-128-CBC', // 使用的加密算法和模式,需与CryptoJS中对应
$key, // 密钥
OPENSSL_RAW_DATA,
$iv // 初始化向量
);
// 检查结果
if ($decryptedData === false) {
// 解密失败处理
die('Decryption error: ' . openssl_error_string());
}
// 输出解密后的数据
echo $decryptedData;
}else {
echo "正则匹配失败";
}
} else {
echo "无效URL";
}
} else {
echo "参数错误";
}
?>
Powered By Cheug's Blog
Copyright Cheug Rights Reserved.