这更像是一种有趣的事情,但因为我很好奇......(这实际上是混淆,但我正在解释它,所以每个人都可以从中获取一些东西)
假设我们有一个字符串(〜在JavaScript中):
var str = "stackoverflow
现在,也要说这个字符串应该在视觉上模糊不清,这样如果你要通读,你不会只看到stackoverflow
,而是简单地阅读一些东西。我正在考虑将它放入数字形式,然后将其转换为像任何其他字符串一样读取。不知道是否可能,但我会尝试它,因为它很有趣。
所以,我的问题是,你是如何亲自这样做的,同时保持字符串完全有效?我个人尝试加入一堆Regex,它真的没有为我自己的乐趣做任何事情。同样,这更像是一种因为我好奇的东西,而且可能不会被使用。
示例:
var str = `s./\\t./ack;
输出:
stack
显然代码完全不可能,但它只是说明了我正在看的内容。
答案 0 :(得分:1)
您可以将每个字符编码为字符实体:
"\u0073\u0074\u0061\u0063\u006b\u006f\u0076\u0065\u0072\u0066\u006c\u006f\u0077"
混淆(如果这是你的目标)在很大程度上是毫无意义的,但是根据要求,stackoverflow
在字符串中不再可见。执行编码的函数:
function uniencode(str) {
function pad(str) {
return Array(5 - str.length).join('0') + str;
}
return Array.prototype.map.call(str, function(c) {
return '\\u' + pad(c.charCodeAt(0).toString(16));
}).join('');
}
答案 1 :(得分:1)
Base64很常见。遗憾的是,JavaScript不提供本机Base64支持,但您可以在PHPJS上找到encoding和decoding函数。
示例:
var str = "c3RhY2tvdmVyZmxvdw";
alert(base64_decode(str)); // alerts "stackoverflow"
编辑:正如Charmander所指出的那样(喜欢名字^ _ ^),有些浏览器(Firefox,Chrome ......)确实支持Base64。它们只有非常奇怪的函数名称:btoa()
进行编码,atob()
进行解码。
答案 2 :(得分:0)
http://www.javascriptobfuscator.com/default.aspx
var _0x6ee4=["\x73\x74\x61\x63\x6B\x6F\x76\x65\x72\x66\x6C\x6F\x77"];
var str=_0x6ee4[0];