Muhamad Faizan Khan Ответов: 1

шифрование с использованием javascript без какой-либо внешней библиотеки


На странице входа в систему я сделал rЗапомни меня чек по этому чеку щелчок сохранение имени пользователя и пароля в файлах cookie с помощью javascript, но я хочу сохранить зашифрованные файлы cookie паролей, чтобы они могли быть безопасными. (без использования какой-либо внешней библиотеки JS, пожалуйста)

Sergey Alexandrovich Kryukov

Почему? почему "без всякой внешней библиотеки"? Тогда напишите такие функции сами; в чем проблема?
Такие библиотеки хорошо известны, люди ими пользуются. Неужели вы действительно надеетесь, что без всякой мотивации с вашей стороны кто-то откажется от вашего собственного дела и поможет вам в том, что вряд ли можно воспринимать иначе, как бессмысленный каприз? Зачем кому-то вообще пытаться ответить на твой вопрос?

Во всяком случае, это не то, как поддерживается защита паролем.

—СА

Muhamad Faizan Khan

есть ли какая-то встроенная поддержка? я имею в виду

Sergey Alexandrovich Kryukov

О... Я не думаю, что такое возможно.
—СА

Muhamad Faizan Khan

я тоже проверяю это
var encrypted = CryptoJS.AES.encrypt("сообщение", "секретная парольная фраза");
оповещение(зашифрованное);
var decrypted = CryptoJS.AES.decrypt(зашифрованный, "секретная парольная фраза");
предупреждение(расшифровано);
используя это https://code.google.com/p/crypto-js/
но результат не тот же самый при расшифровке. чего мне не хватает

Richard Deeming

Не знаю, почему это снова попало в список "активных", но если кто-то еще ищет решение, то ответ прост:

НЕ ДЕЛАЙ ЭТОГО!

Есть абсолютно не нужно чтобы сохранить имя пользователя и пароль в файле cookie. Когда-либо. При любых обстоятельствах.

Если пользователь хочет, чтобы его учетные данные запоминались, он может использовать встроенный в браузер менеджер паролей или внешний менеджер паролей.

Если пользователь хочет, чтобы его сеанс длился дольше, то увеличьте тайм-аут для файла cookie аутентификации.

То, что описывает этот вопрос, - это способ полностью нарушить безопасность вашего приложения. С таким же успехом вы можете вообще не иметь никакой аутентификации!

1 Ответов

Рейтинг:
0

Santhosh Babu Mahimairaj

(function(exports) {
  "use strict";
 
  var XORCipher = {
    encode: function(key, data) {
      data = xor_encrypt(key, data);
      return b64_encode(data);
    },
    decode: function(key, data) {
      data = b64_decode(data);
      return xor_decrypt(key, data);
    }
  };
 
  var b64_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
 
  function b64_encode(data) {
    var o1, o2, o3, h1, h2, h3, h4, bits, r, i = 0, enc = "";
    if (!data) { return data; }
    do {
      o1 = data[i++];
      o2 = data[i++];
      o3 = data[i++];
      bits = o1 << 16 | o2 << 8 | o3;
      h1 = bits >> 18 & 0x3f;
      h2 = bits >> 12 & 0x3f;
      h3 = bits >> 6 & 0x3f;
      h4 = bits & 0x3f;
      enc += b64_table.charAt(h1) + b64_table.charAt(h2) + b64_table.charAt(h3) + b64_table.charAt(h4);
    } while (i < data.length);
    r = data.length % 3;
    return (r ? enc.slice(0, r - 3) : enc) + "===".slice(r || 3);
  }
 
  function b64_decode(data) {
    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, result = [];
    if (!data) { return data; }
    data += "";
    do {
      h1 = b64_table.indexOf(data.charAt(i++));
      h2 = b64_table.indexOf(data.charAt(i++));
      h3 = b64_table.indexOf(data.charAt(i++));
      h4 = b64_table.indexOf(data.charAt(i++));
      bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
      o1 = bits >> 16 & 0xff;
      o2 = bits >> 8 & 0xff;
      o3 = bits & 0xff;
      result.push(o1);
      if (h3 !== 64) {
        result.push(o2);
        if (h4 !== 64) {
          result.push(o3);
        }
      }
    } while (i < data.length);
    return result;
  }
 
  function keyCharAt(key, i) {
    return key.charCodeAt( Math.floor(i % key.length) );
  }
 
  function xor_encrypt(key, data) {
    return _.map(data, function(c, i) {
      return c.charCodeAt(0) ^ keyCharAt(key, i);
    });
  }
 
  function xor_decrypt(key, data) {
    return _.map(data, function(c, i) {
      return String.fromCharCode( c ^ keyCharAt(key, i) );
    }).join("");
  }
 
  exports.XORCipher = XORCipher;
 
})(this);


Пример вызова функции :

XORCipher.encode("test", "foobar");  
 XORCipher.decode("test", "EgocFhUX");