// 定义一个密钥,可以自己修改
var key = "bing";
// 定义一个加密函数,将js代码转换成16进制的字符串
function encrypt(code) {
var result = "";
for (var i = 0; i < code.length; i++) {
// 将每个字符和密钥的对应字符异或,然后转换成16进制
var charCode = code.charCodeAt(i) ^ key.charCodeAt(i % key.length);
var hexCode = charCode.toString(16);
// 如果转换后的长度不足2位,补0
if (hexCode.length < 2) {
hexCode = "0" + hexCode;
}
// 拼接结果字符串
result += hexCode;
}
return result;
}
// 定义一个解密函数,将16进制的字符串转换成js代码
function decrypt(hex) {
var result = "";
for (var i = 0; i < hex.length; i += 2) {
// 将每两位16进制转换成10进制的数字
var charCode = parseInt(hex.substr(i, 2), 16);
// 将数字和密钥的对应字符异或,然后转换成字符
var char = String.fromCharCode(charCode ^ key.charCodeAt((i / 2) % key.length));
// 拼接结果字符串
result += char;
}
return result;
}
// 定义一个要加密的js代码,可以自己修改
var code = "alert('Hello, this is Bing!');";
// 调用加密函数,得到加密后的字符串
var encrypted = encrypt(code);
// 调用解密函数,得到解密后的字符串
var decrypted = decrypt(encrypted);
// 打印加密后和解密后的字符串,可以看到它们是一样的
console.log(code);
console.log(decrypted);
// 调用加密后的eval函数,执行加密后的代码
var eval = function (x) {
return Function(decrypt(x))();
};
eval(encrypted);
如果需要更多的定制化JS加密,或想要还原某些加密,可以联系官网客服。