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

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

10.06.2016, 02:49. Показов 8995. Ответов 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,028
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,028
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,028
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
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru