0

这更像是一件有趣的事情,但因为我很好奇..(这本质上是混淆,但我正在解释它,所以每个人都可以从中获取一些东西)

假设我们有一个字符串(在 JavaScript 中是 ~):

var str = "stackoverflow

现在,还要说这个字符串应该在视觉上被遮挡,这样如果你要通读,你就不会只是看到stackoverflow那里,而是一些更难简单阅读的东西。我正在考虑将其转换为数字形式,然后将其转换为像任何其他字符串一样读取。不知道这是否可能,但我会尝试它,因为它很有趣。

所以,我的问题是,你个人如何做到这一点,同时保持字符串完全有效?我个人尝试放入一堆对我自己的乐趣没有任何帮助的正则表达式。同样,这更像是一种因为我很好奇的东西,并且可能不会被使用。

例子:

var str = `s./\\t./ack;

输出:

stack

显然,该代码完全不可能,但它只是说明了我正在查看的内容。

4

3 回答 3

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('');
}
于 2012-08-03T19:39:04.323 回答
1

Base64 很常见。不幸的是,JavaScript 不提供原生 Base64 支持,但您可以在 PHPJS上找到编码解码功能。

例子:

var str = "c3RhY2tvdmVyZmxvdw";
alert(base64_decode(str)); // alerts "stackoverflow"

编辑:正如 Charmander 所指出的(喜欢这个名字 ^_^),一些浏览器(Firefox、Chrome ......)实际上支持 Base64。他们只是为这些函数取了很奇怪的名字:btoa()编码和atob()解码。

于 2012-08-03T19:43:05.460 回答
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];
于 2012-08-03T19:44:35.383 回答