[e=0]function getrandom(encodedStr) {
// 补全Base64编码
var encoded = encodedStr.trim().replace(/=+$/, '');
var padding = (4 - (encoded.length % 4)) % 4;
for (var i = 0; i < padding; i++) {
encoded += '=';
}
// Base64解码
var decoded;
try {
decoded = atob(encoded);
} catch (e) {
throw new Error("Base64解码失败: " + e.message);
}
// 尝试Hex解码
if (/^[0-9a-fA-F]+$/.test(decoded)) {
var url = '';
for (var i = 0; i < decoded.length; i += 2) {
var hex = decoded.substr(i, 2);
url += String.fromCharCode(parseInt(hex, 16));
}
return url;
}
// XOR解密(使用配置中的key)
var key = "f33ee9253f50ef7f4787ea05bf2ebc42";
var url = '';
var keyLength = key.length;
for (var i = 0; i < decoded.length; i++) {
var decodedCharCode = decoded.charCodeAt(i);
var keyCharCode = key.charCodeAt(i % keyLength);
url += String.fromCharCode(decodedCharCode ^ keyCharCode);
}
// 验证是否解密出有效URL
if (url.indexOf('http') !== -1) {
return url;
}
// 尝试AES解密(使用配置中的vkey)
try {
var fullKey = "f33ee9253f50ef7f4787ea05bf2ebc42";
var iv = fullKey.substr(0, 16);
var aesDecrypted = aesDecrypt(decoded, fullKey, iv);
if (aesDecrypted && aesDecrypted.indexOf('http') !== -1) {
return aesDecrypted;
}
} catch (e) {
// AES解密失败时忽略
}
return "解密失败: 无法解析有效的URL";
}
// AES-CBC解密实现(依赖CryptoJS库)
function aesDecrypt(data, key, iv) {
if (typeof CryptoJS === 'undefined') {
return null;
}
var keyHex = CryptoJS.enc.Utf8.parse(key);
var ivHex = CryptoJS.enc.Utf8.parse(iv);
var encryptedHexStr = CryptoJS.enc.Utf8.parse(data);
var encryptedBase64 = CryptoJS.enc.Base64.stringify(encryptedHexStr);