Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/41: Рейтинг темы: голосов - 41, средняя оценка - 4.85
1 / 1 / 4
Регистрация: 24.10.2014
Сообщений: 200

Метод шифрования Уитстона "Двойной квадрат"

10.06.2016, 02:49. Показов 8832. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Код шифрования у меня реализован, проблема в том, что я не знаю как сделать так, чтобы при выборе RadioButton1 "Русский текст" в StringGrid1 и StringGrid2 выводились рандомно символы, без повторений от а до я и знаки ("," " " ":" "."), а при выборе RadioButton2 "Английский текст" было тоже самое, что и в первом случае, только от a до z и символы ("," " " ":" "." "?" "-" """ "(" ")"). Это всё происходит при выборе RadioButton и нажатие на кнопку "Заполнить таблицы". Что было понятнее скрин программы ниже:
Миниатюры
Метод шифрования Уитстона "Двойной квадрат"  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.06.2016, 02:49
Ответы с готовыми решениями:

Написать программу для шифрования (шифры Плейфера, «двойной квадрат» Уитстона, Вернама)
Помогите сделать задачу, нужно написать программу для шифрования данных используя один из потоковых криптографических алгоритмов (шифры...

Метод шифрования Уинстона (двойной квадрат)
Необходимо на Java реализовать шифрование и дешифрование текста двойным квадратом Уинстона. Алгоритм:...

метод шифрования Уистона(двойной квадрат)
Необходимо на Javascripte реализовать шифрование текста двойным квадратом Уистона.Алгоритм здесь...

26
place status here
 Аватар для gunslinger
3192 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,026
22.06.2016, 02:41
Студворк — интернет-сервис помощи студентам
11-13 строки - генерация последовательности символов.
15-16 - заполнение таблицы.
0
1 / 1 / 4
Регистрация: 24.10.2014
Сообщений: 200
22.06.2016, 06:57  [ТС]
т.е. для второй таблицы нужно будет описывать новые переменные?
0
place status here
 Аватар для gunslinger
3192 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,026
22.06.2016, 11:14
Для выбора языка используй RadioGroup.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  String alph = "абвгдежзиклмнопрстуфхцчшщъыьэюя, :.", test = "", test2 = "";
  if (RadioGroup1->ItemIndex == 1)
    alph = "abcdefghijklmnopqrstuvwxyz.,: ?-\"()";
  const n = 35;  // количество cимволов в alph
  const k = 5;  // количество столбцов в таблице
  randomize();
  int arr[n], arr2[n], i;
  for (i = 0; i < n; i++)
  {
    arr[i] = i + 1;
    arr2[i] = i + 1;
  }
  std::random_shuffle(arr, arr + n);
  std::random_shuffle(arr2, arr2 + n);
  for (i = 0; i < n; i++)
  {
    test += alph[arr[i]];
    test2 += alph[arr2[i]];
  }
 
  for (i = 0; i < n; i++)
  {
    StringGrid1->Cells[i%k][i/k] = test[i+1];
    StringGrid2->Cells[i%k][i/k] = test2[i+1];
  }
Миниатюры
Метод шифрования Уитстона "Двойной квадрат"   Метод шифрования Уитстона "Двойной квадрат"  
0
1 / 1 / 4
Регистрация: 24.10.2014
Сообщений: 200
23.06.2016, 09:19  [ТС]
Я с RadioButton как-то уже разобрался...
А что делать с кодом который находится в самой форме, т.е. он прописан в "Unit5.h"?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// Выполняет преобразование
AnsiString __fastcall TfmMain::work( AnsiString aString ){
    // Базовая таблица
   const char BaseTable[7][5] = {
      { 'а', 'б', 'в', 'г','д'  },
      { 'е', 'ж', 'з', 'и', 'к' },
      { 'л', 'м', 'н', 'о', 'п' },
      { 'р', 'с', 'т', 'у', 'ф' },
      { 'х', 'ц', 'ч', 'ш', 'щ' },
      { 'ъ', 'ы', 'ь', 'э', 'ю' },
      { 'я', '.', ',', ':', ' ' }
   };
 
    // Степень перемешивания, с которой сформируются исходные таблицы
   const int MixDepth = 1000;
 
   char table[2][7][5];
    // Заполним таблицы
   memcpy( table[0], BaseTable, sizeof( BaseTable ) );
   memcpy( table[1], BaseTable, sizeof( BaseTable ) );
 
    // Перемешаем таблицы
   randomize();
   for( int t = 0; t < 2; t++ ){
      for( int i = 0; i < MixDepth; i++ ){
          // Мешаем первую таблицу
         int y1 = rand() % 7;
         int x1 = rand() % 5;
         int y2 = rand() % 7;
         int x2 = rand() % 5;
         char tmp = table[t][y1][x1];
         table[t][y1][x1] = table[t][y2][x2];
         table[t][y2][x2] = tmp;
      }
   }
 
   int len = aString.Length();
   if( len & 1 ){
       // Добавим пробел
      aString += " ";
      len++;
   }
 
    // Сформируем зашифрованую строку
   AnsiString retVal;
   for( int i = 0; i < len; i++ ){
      int x, y;
      findXY( (char * )BaseTable, aString[i + 1], x, y );
      if( x < 0 || x < 0 ){
         return AnsiString( "Неизвестный символ в позиции " ) + IntToStr( i + 1 );
      }
      retVal += table[i & 1][y][x];
   }
 
   return retVal;
}
Добавлено через 6 часов 10 минут
gunslinger, как решить эту проблему?

Добавлено через 3 часа 31 минуту
Мне бы просто написать такой же код тодько под латиницу, да и ещё чтобы тоже через sRadioButton работал

Добавлено через 1 час 46 минут
Кто поможет разобраться?

Добавлено через 5 часов 22 минуты
Благодарю, уже разобрался, остался только последний вопрос.

Добавлено через 23 минуты
Вроде как в этой части кода происходит шифрование:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// Сформируем зашифрованую строку
   AnsiString retVal;
   for( int i = 0; i < len; i++ ){
      int x, y;
      findXY( (char * )BaseTable, aString[i + 1], x, y );
      if( x < 0 || x < 0 ){
         return AnsiString( "Неизвестный символ в позиции " ) + IntToStr( i + 1 );
      }
      retVal += table[i & 1][y][x];
   }
 
   return retVal;
}
Вопрос - как сделать дешифрование?
0
place status here
 Аватар для gunslinger
3192 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,026
23.06.2016, 11:52
13-ый пост и ссылка в нем
По ней (ссылке в посте) находится информация, которую ты упорно игнорируешь (как сам алгоритм, так и ответ на вопрос):
Дешифрование происходит аналогично шифрованию, только таблицы, которые применялись для шифрования, меняются местами.
Предвидя дальнейшую серию вопросов, уточню: ты с шифрованием разобрался? Чтобы чужой код использовать, иногда тоже нужно шевелить извилинами.

Добавлено через 17 минут
Замечания:
1) сравнение в строке №6 - вместо второго x < 0, полагаю, должно быть y < 0
2) что за функция findXY в 5-ой строке? (понятно, что она ищет символ / символы; надеюсь, ее реализация у тебя есть)
3) для дешифрования в 9-ой строке попробуй заменить i на (i+1) именно со скобками
0
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 39
24.04.2017, 20:04
если есть исходный файл скиньте пожалуйста
0
1 / 1 / 4
Регистрация: 24.10.2014
Сообщений: 200
26.04.2017, 21:32  [ТС]
вот программа, если еще надо...
Вложения
Тип файла: rar НОРМАЛЬНАЯ ВЕРСИЯ ПРОГРАММЫ!!!!!!!!.rar (810.6 Кб, 29 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.04.2017, 21:32

Шифрование Уитстона "Двойной квадрат"
Добрые люди, нужна помощь, есть задание, но у меня не получается, не понимаю как записать все это: написать код на языке C++ с шифрованием,...

Алгоритм Шифрования Двойной Квадрат Уитсона
Всем доброго времени суток! В общем кто может помочь реализовать алгоритм шифрования &quot;Двойного Квадрата Уитсона&quot; нужен только...

Метод Двойной квадрат
Всем привет!!! Прошу помочь!!! Нужно сделать поле, в которое вписываешь рандомное слово, нажимаешь кнопку и на поле ниже появляется уже...

Метод шифрования Square (квадрат)
Здравствуйте, не могли бы помочь с методом шифрования и дешифрования квадрат, разработанным в 1997 году, может у кого есть программы на...

Реализовать алгоритм шифрования двойной перестановки
Здравствуйте, нужно написать код, который будет делать шифровку и дешифровку по методу двойной перестановки. Часть кода уже есть,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru