Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 27.12.2018
Сообщений: 28

Шифровка и дешифрование методом Гронсфельда

05.04.2020, 21:07. Показов 3882. Ответов 6

Студворк — интернет-сервис помощи студентам
Метод шифрования Гронсфельда:Сама схема очень напоминает шифр Цезаря.Каждой букве соответствует некая цифра,это цифра будет показывать на сколько позиций будет происходить смещение алфавита для каждой конкретной буквы.Обратное преобразование происходит подобным образом,только каждый раз алфавит сдвигаем в другую сторону.
Пример:При ключе шифрования к=1254 слово
"information" преобразуется в
I N F O R M A T I O N
1 2 5 4 1 2 5 4 1 2 5
I P K S R O F X I Q S
т.е шифруется как ipksrofxiqs

требуется чтобы было создано 2 кнопки-шифровать и дешифровать и вообще чтобы все было красиво и с подписями.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.04.2020, 21:07
Ответы с готовыми решениями:

Алгоритм шифрования методом Гронсфельда
И снова доброго времени суток, уважаемые форумчане! Подскажите, как сделать, чтобы при шифровании каждый следующий символ шифровался...

Шифрование текстового файла методом Гронсфельда
доброго времени суток! помогите, пожалуйста, написать программу "из внешнего файла в формате «ТХТ» ввести текст и зашифровать/расшифровать...

Шифровка методом линейной перестановки
Здравствуйте. Суть программы в том, чтобы. получив строку, разбить ее на блоки, количество символов в которых задает пользователь. Потом, с...

6
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433
06.04.2020, 08:25
https://www.cyberforum.ru/post156632.html
Шифр Гронсфельда
0
 Аватар для canadamoscow
1179 / 430 / 194
Регистрация: 23.03.2020
Сообщений: 1,021
Записей в блоге: 1
06.04.2020, 14:00
Лучший ответ Сообщение было отмечено mr-Crocodile как решение

Решение

Pascal
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
uses FormsABC;
 
var 
  a := new Field('Код шифра');
  ok := new Button('Шифровать'); 
  dok := new Button('Дешифратор'); 
  tb: TextBox;
  tb2: TextBox;
 
procedure MyClick; // Шифрование
begin
  var Шифровка : (integer,integer) -> char := (a, b) -> 
    begin
     var d := b;
     case chr(a) of
       'A'..'Z': if a + b > ord('Z') then d -= 26;
       'a'..'z': if a + b > ord('z') then d -= 26;
       '0'..'9': if a + b > ord('9') then d -= 10;
       'А'..'Я': if a + b > ord('Я') then d -= 32;
       'а'..'я': if a + b > ord('я') then d -= 32;
     end;  
     Result := chr(a + d);
   end;
  var s:= tb.Text;
  var c := a.Text.ToCharArray.Select(t->t.todigit).Cycle.Take(s.Length).toArray;
  var res := s.ToCharArray.Select ((v,i) -> Шифровка(ord(v), c[i])).JoinToString;   
  tb2.AddLine(s + ' ++> ' + res);
end;
 
procedure MyClickd; // Дешифрование
begin
  var Дешифровка : (integer,integer) -> char := (a, b) -> 
   begin
     var d := b;  
     case chr(a) of
       'A'..'Z': if a - b < ord('A') then d -= 26;
       'a'..'z': if a - b < ord('a') then d -= 26;
       '0'..'9': if a - b < ord('0') then d -= 10;
       'А'..'Я': if a - b < ord('А') then d -= 32;
       'а'..'я': if a - b < ord('а') then d -= 32;
     end;  
     Result := chr(a - d);
   end;
  var s:= tb.Text;
  var c := a.Text.ToString.ToCharArray.Select(t->t.todigit).Cycle.Take(s.Length).toArray;
  var res := s.ToCharArray.Select ((v,i) -> Дешифровка(ord(v), c[i])).JoinToString;   
  tb2.AddLine(s + ' ---> ' + res);
end;
 
procedure InitControls;
begin
  MainForm.Title := 'Шифровка-Дешифровка';
  MainForm.SetSize(500,245);
  MainForm.CenterOnScreen;
  mainPanel.Dock := DockStyle.Left;
  mainPanel.Width := 110;
    a.Text := '0';
    ok.Width := 100;
    dok.Width := 100;
    ok.Click += MyClick;
    dok.Click += MyClickd;
  ParentControl := MainForm;
  tb := new TextBox;  
  tb.Dock := DockStyle.Top;
  tb2 := new TextBox;
  tb2.Dock := DockStyle.Bottom;
end;
 
begin
  InitControls;
end.
1
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
06.04.2020, 17:33
в 26 и 46 строках вместо
Цитата Сообщение от canadamoscow Посмотреть сообщение
Pascal
1
Шифровка(ord(v), c[i])).JoinToString;
Цитата Сообщение от canadamoscow Посмотреть сообщение
Pascal
1
Дешифровка(ord(v), c[i])).JoinToString;
должно быть

Pascal
1
2
3
...  Шифровка(ord(v), c[i])).JoinIntoString;
 
.....   Дешифровка(ord(v), c[i])).JoinIntoString;
Цитата Сообщение от людмила1234 Посмотреть сообщение
"information" преобразуется в
I N F O R M A T I O N
1 2 5 4 1 2 5 4 1 2 5
I P K S R O F X I Q S
т.е шифруется как ipksrofxiqs
у тебя неправильно подсчитано, сдвиг на 1, не оставляет ту же букву, I превращается в J, R -> S

у canadamoscow это работает корректно:
INFORMATION --> JPKSSOFXJQS
0
 Аватар для canadamoscow
1179 / 430 / 194
Регистрация: 23.03.2020
Сообщений: 1,021
Записей в блоге: 1
06.04.2020, 18:31
mr-Crocodile,
JoinIntoString в предпоследнем обновлении PascalABC.net заменили на JoinToString при этом старую оставили
для совместимости. Так что обнови IDE
1
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
06.04.2020, 18:40
Цитата Сообщение от mr-Crocodile Посмотреть сообщение
в 26 и 46 строках вместо
Нет, .JoinIntoString, в последних версиях его скрыли и возможно в будущем уберут.
Правильно таки .JoinToString
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
07.04.2020, 10:53
Цитата Сообщение от canadamoscow Посмотреть сообщение
mr-Crocodile,
JoinIntoString в предпоследнем обновлении PascalABC.net заменили на JoinToString при этом старую оставили
для совместимости. Так что обнови IDE
ахренеть.

Цитата Сообщение от Sun Serega Посмотреть сообщение
Нет, .JoinIntoString, в последних версиях его скрыли и возможно в будущем уберут.
Правильно таки .JoinToString
А простите - на кой ляд это нужно?
в моей IDE 3.5.1.2277 нет метода .JoinToString
т.е. судя по всему, в какой то версии добавили новый метод .JoinToString, стало два метода .JoinToString и .JoinIntoString, теперь его будут убирать. Для чего это? Чтобы код для разных версия IDE был разный? Или просто разработчики резвятся, так, чисто фана?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.04.2020, 10:53
Помогаю со студенческими работами здесь

Шифрование/дешифрование методом Цезаря
Имеется код, который зашифровывает написанное методом Цезаря. Нужна помощь: как добавить сюда дешифрование? // хз.cpp : main project...

Шифрование/дешифрование методом Цезаря
посмотрите пжлст код на c++, если что укажите на ошибки и т.п. сильно не разбираюсь Если не трудно помогите подкорректировать) #include...

Шифрование / дешифрование методом Цезаря
Доброго времени суток, форумчане! Да-да, на форуме 100500 подобных тем, однако интересующей меня информации я не нашёл. У меня есть...

Дешифрование методом Плэйфера в MS Excel
Пожалуйста Подскажите как сделать дешифратор в EXCEL с помощью формул. Или скажите с помощью какой формулы можно с генерировать алфавит

Шифрование и дешифрование методом Цезаря
Здравствуйте. Не работает шифрование и дешифрование. Если выводить в шифровке расположение букв числами, то они отрицательные....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru