В поисках зашифрованного скрипта Цезаря в JavaScript я могу изменить его, чтобы разрешить все (набираемые) символы ASCII - PullRequest
1 голос
/ 08 октября 2019

В свободное время я работал над программой шифрования данных. Я добавил свой собственный уровень шифрования и пытаюсь добавить модифицированный шифр Цезаря, который при сдвиге сдвигает пробелы, числа и другие символы из списка символов ASCII.

Я уже изменил два скрипта:

Ни один из них не работает должным образом.

Текст - это введенные символы, c - это один символ в ASCII, результат - результат.

 var result = "";
    for (var i = 0; i < text.length;) {
    var c = text.charCodeAt(i);
    if (32<=c&&c<=126){result+=String.fromCharCode((c-32+key)%94+32);}
      else throw("character not within range");i++};

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

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Нашел собственное исправление,

var result = ``;
    for (var i = 0; i < text.length;) {
            var c = text.charCodeAt(i);
            for (var a = 0; a < key;){
                c=c-1;
                if (c<32){
                c=c+94;
                };
                a++;
                console.log(a);
            }
            result+=String.fromCharCode(c);
            i++;
    }

отлично работает и даже поддерживает многострочный!

0 голосов
/ 08 октября 2019

На самом деле я только что проверил ваш скрипт, и он работает. Я поместил это в функцию:

const text = 'abcABC';
const key = 10;

function caesar(text, key) {
  var result = '';

  for (var i = 0; i < text.length; ) {
    var c = text.charCodeAt(i);
    if (32 <= c && c <= 126) {
      result += String.fromCharCode(((c - 32 + key) % 94) + 32);
    } else throw 'character not within range';
    i++;
  }

  return result;
}

const x = caesar(text, key);

console.log(x);  // -> klmKLM

const y = caesar(x, -key);

console.log(y);  // -> abcABC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...