Herboren Ответов: 1

Пытаюсь изменить свой алгоритм


Я изначально создал это, что заняло у меня пару дней, чтобы понять

 var all = ("ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.#-?").split('');
        var position;
        var oKey = "P";

function encrypt() // Encrypt Fixed
        {
            var sEncode = ("HI-MOM").split('');

            for (var i = 0; i < sEncode.length; i++) {
                if (all.indexOf(oKey) < all.indexOf(sEncode[i])) {                    
                    position = all.indexOf(sEncode[i]) - all.indexOf(oKey);
                    //output.value += "oKey: " + oKey + " distance to sEncode[" + i + "]: " + sEncode[i] + " Count: " + position + " Final Char: " + all[position-1] + "\n";
                    oKey = sEncode[i];
                }
                else {                    
                    position = all.length - all.indexOf(oKey) + all.indexOf(sEncode[i]);
                    //output.value += "oKey: " + oKey + " distance to sEncode[" + i + "]: " + sEncode[i] + " Count: " + position + " Final Char: " + all[position-1] + "\n";
                    oKey = sEncode[i];
                }

                
            }
        }


Первоначально я использовал операторы break, чтобы увидеть фоновую активность. Вот что комментируется в кодировке()

Теперь мне нужно повернуть его вспять, что ведет меня вверх по стене. Я продолжаю думать о логике, и она, кажется, не совсем складывается, потому что oKey="P" был началом моего смещения и изменился оттуда, но не сейчас я чувствую, что "P" собирается сбить меня с толку.

function decrypt() // Offset fixed
      {
          var sEncode = ("6A4NB#").split('');

          for (var i = 0; i < sEncode.length; i++) {
              if (all.indexOf(oKey) < all.indexOf(sEncode[i])) {
                  position = all.indexOf(sEncode[i]) - all.indexOf(oKey);
                  output.value += "oKey: " + oKey + " distance to sEncode[" + i + "]: " + sEncode[i] + " Count: " + position + " Final Char: " + all[position - 1] + "\n";
                  oKey = sEncode[i];
              }
              else {
                  position = all.length - all.indexOf(oKey) + all.indexOf(sEncode[i]);
                  output.value += "oKey: " + oKey + " distance to sEncode[" + i + "]: " + sEncode[i] + " Count: " + position + " Final Char: " + all[position - 1] + "\n";
                  oKey = sEncode[i];
              }


          }
      }


Что я уже пробовал:

Я перепробовал все возможные способы замены переменных позиций даже на замену операторов+/ -, и это просто кодирует его еще больше =(

Patrice T

в вашем коде используется то, чего нет в списке.
Как мы можем догадаться, что он делает ?

Herboren

Я обновил его, извините, забыл, что был опущен =\

Herboren

Я еще не пробовал, но я верю, что если я переверну струну и найду расстояние назад, то смогу найти свою струну

1 Ответов

Рейтинг:
0

Patrice T

Прежде всего я вижу несколько проблем в encrypt.

var oKey = "P";

Начальное значение oKeyустанавливается снаружи encrypt функция. Как узнать, что значение всегда равно "P" при шифровании.

После кодирования каждого символа в position- ты ничего с ним не делаешь.

Функция ничего не возвращает.

Откуда вы знаете ценность oKey когда вы звоните в decrypt функция.


Herboren

Начальное значение oKey всегда равно "P", однако оно изменится, как только будет найдено смещение первых символов. Как только расстояние или положение между " P " и " H "найдено, он переходит к следующему символу в массиве, являющемуся "H", и находит расстояние между " H " и "I", затем " I " и " - " и так далее. Оки всегда берет предыдущий элемент в массиве, чтобы найти расстояние до элемента перед ним.

Независимо от того, что начальное значение oKey всегда будет "P" в начале функции encrypt (), но будет изменяться в ходе этого процесса

Patrice T

Что добавить, если вам нужно позвонить encrypt 2 раза ?

Herboren

Мне придется переместить Оки внутрь функции ecrypt, я не хочу, чтобы она шла глубже, чем начальное шифрование