Мой код JavaScript RC4 разрушает мой оригинальный текст - PullRequest
0 голосов
/ 14 октября 2019

Я перепробовал все, от изменения нескольких переменных до целых чисел, а также пытался искать ответы в Интернете. Я знаю, что RC4 не так уж безопасен, но он нужен мне только для простого проекта.

Проблема заключается в том, когда я пытаюсь зашифровать огромное количество символов текста и когда я его расшифровываю, он возвращает тарабарщину, так как в расшифрованном тексте не совпадает с исходным текстом, поскольку некоторые из них отсутствуют.

Мой код:

var RC4key = "Arc"; //My secret key.

var contentValue = "The-Message"; //My plaintext message that I wish to encrypt.

function rc4Encrypt(key, pt) {
  s = new Array();
  for (var i = 0; i < 256; i++) {
    s[i] = i;
  }
  var j = 0;
  var x;
  for (i = 0; i < 256; i++) {
    j = (j + s[i] + key.charCodeAt(i % key.length)) % 255;
    x = s[i];
    s[i] = s[j];
    s[j] = x;
  }
  i = 0;
  j = 0;
  var ct = '';
  for (var y = 0; y < pt.length; y++) {
    i = (i + 1) % 255;
    j = (j + s[i]) % 255;
    x = s[i];
    s[i] = s[j];
    s[j] = x;
    ct += String.fromCharCode(pt.charCodeAt(y) ^ s[(s[i] + s[j]) % 255]);
  }
  return ct;
}

/*rc4Decrypt is used to decrypt the encrypted text to the original as long as the key is correct.*/
function rc4Decrypt(key, ct) {
  return rc4Encrypt(key, ct);
}

/*I am trying to encrypt it and placing the value in "valueEncrypted" variable.*/
var valueEncrypted = rc4Encrypt(RC4key, contentValue);

/*I am outputting the value to the console.*/
console.log(valueEncrypted);
  • Пожалуйста, не применяйте base64 или любые другие схемы кодирования, так как это не требуется.

  • Да, я знаю, что могу использовать CryptoJS или другие библиотеки, но я предпочитаю использовать его в vanilla (чистом) JavaScript, так как это требуется для моего проекта, чтобы не использовать никаких зависимостей для достижения этой цели.

Спасибо всем, кто прочитал мой пост и задумался. Я действительно ценю это.

...