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 に答える