Мой плагин шифрования текста (Шифр Цезаря)

расширяем возможности Construct 2

Сообщение Мой плагин шифрования текста (Шифр Цезаря)
» 31 янв 2018, 12:39

Шифр Цезаря, также известный как шифр сдвига, код Цезаря или сдвиг Цезаря — один из самых простых и наиболее широко известных методов шифрования.

Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите. Например, в шифре со сдвигом вправо на 5, А была бы заменена на F, B станет G, и так далее.

Я реализовал этот алгоритм для Construct 2 для UTF8 (именно в этом была цель).
Для первых значений с 0 по 126. Все работает нормально.
Если у нас номер символа выше чем 126. То сдвиг идет так
А(1040)->1->ё(1105) / сдвиг на 65 увеличился.
А(1040)->2->Ғ(1105) / сдвиг на 130 увеличился.
А(1040)->3->ӓ(1235) / сдвиг на 195 увеличился.
и тд. На дешифровку это не влияет, текст дешифруется.
Таблица символов тут https://unicode-table.com/ru/#control-character

Сам плагин как работает:
Изображение

Вот код в проекте:
Изображение

А вот основной код плагина:
Шифрование:
Код: Выделить всё
Exps.prototype.Encrypt = function (ret, str, shift) {
      str = unescape(encodeURIComponent(str));
      shift = unescape(encodeURIComponent(shift));
      var arr = str.split(""),res="",i,lenArr = arr.length; //сделали из строки массив
      for(i = 0; i < lenArr; i++)
      {
        var Position = arr[i].charCodeAt(0); //узнали номер
        Position += parseInt(shift); // сдвиг
        if (Position > 65535) Position -= 65536; // проверка
        res += String.fromCharCode(Position);// перевели из числа в символ
      };
      if (res == null) res = "";
      ret.set_string(decodeURIComponent(escape(res)));
   };


Дешифрование:
Код: Выделить всё
   Exps.prototype.Decrypt = function (ret, dat, shift) {
      dat = unescape(encodeURIComponent(dat));
      shift = unescape(encodeURIComponent(shift));
      var arr = dat.split(""),res="",i,lenArr = arr.length; //сделали из строки массив
      for(i = 0; i < lenArr; i++)
      {
        var Position = arr[i].charCodeAt(0); //узнали номер
        Position -= parseInt(shift); // сдвиг
        if ( Position < 0) Position += 65536; // проверка
        res += String.fromCharCode(Position);// перевели из числа в символ
      };
      if (res == null) res = "";
      ret.set_string(decodeURIComponent(escape(res)));
   };


Если я исправлю проблему что после 126 символа сдвиг идет на +65. То обновлю плагин тут, или если кто поможет, буду благодарен.

Установка:
Кинуть папку "AXLL_encdec_Caesar" в "C:\Program Files\Construct 2\exporters\html5\plugins".

Пример проекта приложил. Версия констракта 250, пока не обновлялся на новую. Может проблема в этом, проверю.
Шифр цезаря.rar
(203.3 КБ) Скачиваний: 35
Шифр цезаря (Плагин и пример)
Аватара пользователя

Участник
Сообщений: 49
Я тут с 02 мар 2015
Репутация 25 [ ? ]

Сообщение Мой плагин шифрования текста (Шифр Цезаря)
» 03 фев 2018, 20:44

Поставил сдвиг позиции на 200, выдало ошибку))
 
Изображение
Мои игры:
        Lines 2016
        Bobby Carrot

Мои полезные темы:
        Интеграция шрифтов в Construct 2
        Мой архив примеров и исходников

Мои плагины:
        Comment Layout
        More Cursors
Аватара пользователя

Участник
Сообщений: 213
Я тут с 05 июл 2016
Откуда: Липецк
Двиг: C2, Unity
Лицензия: Pro C2, Unity
VK: vk.com/frezerto
Репутация 37 [ ? ]

Сообщение Мой плагин шифрования текста (Шифр Цезаря)
» 04 фев 2018, 16:58

FrezerTop2, в этом то и проблема "Если я исправлю проблему что после 126 символа сдвиг идет на +65". то есть он почему то не может сдвинуть больше, не помню точно 12 позиций, хотя по факту сдвинет на неск тысяч символов.
Аватара пользователя

Участник
Сообщений: 49
Я тут с 02 мар 2015
Репутация 25 [ ? ]



Вернуться в Плагины и Дополнения для Construct 2

Сейчас эту тему просматривают

Зарегистрированные пользователи: нет зарегистрированных пользователей

Наверх