0
Ich muss JavaScript-Strings mit hexadezimaler Kodierung zerlegen (verschleiern).Wie man JavaScript-Zeichenketten mit hexadezimalem Escape manipulieren kann?
Quellcode:
var a = 'a';
Mangled Code:
var a = '\x61';
Es ist leicht String in einen hexadezimalen Wert zu konvertieren:
var map = {
'\b': '\\b',
'\f': '\\f',
'\n': '\\n',
'\r': '\\r',
'\t': '\\t',
};
var hex = function (str) {
var result = '';
for (var i = 0, l = str.length; i < l; i++) {
var char = str[i];
if (map[char]) {
result += map[char];
} else if ('\\' == char) {
result += '\\' + str[++i];
} else {
result += '\\x' + str.charCodeAt(i).toString(16);
}
}
return result;
};
Aber wenn ich hinzufügen, diese Zeichenfolge an die Ausgabedatei bekomme ich:
var a = '\\x61';
P.S. Ich benutze esprima/escodegen/estraverse um mit AST zu arbeiten.
Sehen Sie, wie die Saiten hier umgesetzt werden: http://stackoverflow.com/questions/21647928/javascript-unicode-string-to -hex –
Hinweis '\ x ??' ist ein Ein-Byte-Zeichen, während '\ u ????' ein Unicode-Zeichen ist. Es ist wahrscheinlich sicherer, Letzteres zu verwenden. –
Diese Version ist vielleicht näher an dem, was Sie brauchen: https://gist.github.com/mathiasbynens/1243213 –