Подтвердить что ты не робот

Простейший способ обфускации и распутывания строки в JavaScript

Я ищу способ обфускации и распутывания строки в JavaScript; под которым я подразумеваю шифрование и дешифрование, когда безопасность не является проблемой. В идеале что-то родное JS (например, base64_encode() и base64_decode() в PHP), чтобы "превратить строку во что-то еще и обратно" без необходимости писать функцию.

Любые предложения приветствуются!

4b9b3361

Ответ 1

Вы можете использовать btoa() и atob(). btoa() похож на base64_encode() и atob() как base64_decode().

Вот пример:

btoa('Some text'); //U29tZSB0ZXh0
atob('U29tZSB0ZXh0'); //Some text

Единственная проблема заключается в том, что эти функции не являются кросс-браузерами. Для кросс-браузерного кодирования/декодирования вы можете использовать http://code.google.com/p/javascriptbase64/

Ответ 2

Стоит отметить, что

(![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]

оценивает строку "fail", не выглядящую как строка. Серьезно, введите его в node и поразите. Вы можете писать что-нибудь в JavaScript, будучи сумасшедшим.

Ответ 3

Я, очевидно, слишком поздно для ответа, но я просто работал над другим решением проблемы, а base64, похоже, был слабым.

Он работает следующим образом:

"abc;123!".obfs(13) // => "nopH>[email protected]"
"nopH>[email protected]".defs(13) // => "abc;123!"

Код:

/**
 * Obfuscate a plaintext string with a simple rotation algorithm similar to
 * the rot13 cipher.
 * @param  {[type]} key rotation index between 0 and n
 * @param  {Number} n   maximum char that will be affected by the algorithm
 * @return {[type]}     obfuscated string
 */
String.prototype.obfs = function(key, n = 126) {
  // return String itself if the given parameters are invalid
  if (!(typeof(key) === 'number' && key % 1 === 0)
    || !(typeof(key) === 'number' && key % 1 === 0)) {
    return this.toString();
  }

  var chars = this.toString().split('');

  for (var i = 0; i < chars.length; i++) {
    var c = chars[i].charCodeAt(0);

    if (c <= n) {
      chars[i] = String.fromCharCode((chars[i].charCodeAt(0) + key) % n);
    }
  }

  return chars.join('');
};

/**
 * De-obfuscate an obfuscated string with the method above.
 * @param  {[type]} key rotation index between 0 and n
 * @param  {Number} n   same number that was used for obfuscation
 * @return {[type]}     plaintext string
 */
String.prototype.defs = function(key, n = 126) {
  // return String itself if the given parameters are invalid
  if (!(typeof(key) === 'number' && key % 1 === 0)
    || !(typeof(key) === 'number' && key % 1 === 0)) {
    return this.toString();
  }

  return this.toString().obfs(n - key);
};