![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
человек
Форумчанин
Регистрация: 11.05.2009
Сообщений: 517
|
![]()
Привет. Помогите пожалуйста с решением такого вот задания на дельфи (извините, но на русском - нет, а переводить - я боюсь, что может потеряться смысл):
на мові Object Pascal в системі програмування Delphi зробити програму «Шифр Хасегава», яка виконує шифрування та дешифрування за алгоритмом Хасегава. При шифруванні кожному символу початкового відкритого повідомлення привласнюється його порядковий номер в алфавіті, після чого обирається ключ і його символи підписуються під символами початкового відкритого повідомлення з послідовним повторюванням ключу. Символам ключу також привласнюються порядкові номери за алфавітом, після чого вони складаються з відповідними символами повідомлення і отримані номери переводяться в символи початкового алфавіту. Відповідно, при перевищенні порядковим номером символу довжини алфавіту треба відняти довжину алфавіту. При дешифруванні виконати зворотні операції. Примерный перевод: Реализовать программу, которая будет шифровать и расшифровывать по алгоритму Хосегава. При шифровании каждому символу начального открытого сообщения присваивается его порядковый номер в алфавите, после чего выбирается ключ и его символы переписываются под символами начального открытого сообщения с последовательным повторением ключа. Символам ключа также присваиваются порядковые номера по алфавиту, после чего они складываются с соответствующими символами сообщения и полученные номера переводятся в символы начального алфавита. Соответственно, при перемещении порядковым номером символа длинны алфавита нужно отнять длину алфавита. При дешифрации выполнить обратные действия. |
![]() |
![]() |
![]() |
#2 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
В чём, собственно, проблема?
|
![]() |
![]() |
![]() |
#3 |
человек
Форумчанин
Регистрация: 11.05.2009
Сообщений: 517
|
![]() |
![]() |
![]() |
![]() |
#4 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
должно быть: Соответственно, при превышении порядковым номером символа длины алфавита нужно отнять длину алфавита. А по сути и правда, задачка проще пареной репки! Что у Вас не получается то? Не знаете, как для символа C1 получить его порядковый номер в алфавите? это делается либо так: Код:
Код:
Предварительно нужно определиться, какие символы составляют исходный алфавит, далее отталкиваться от этого! Например, в показанный выше примерах может быть обработан ТОЛЬКО текст, записанный ПРОПИСНЫМИ русскими буквами! Для остальных символов данный алгоритм шифрования даст сбой (ну, например, если в тексте встретися цифра, или тире, или знак @ - то какой номер данного символа в алфавите возьмёт программа?!) Разумеется, алфавит может быть расширен на все возможные (допустимые в открытом тексте) символы. Например, так: Код:
Цитата:
Что Вы пытались сделать, чтобы реализовать эту простенькую задачу? Где Ваши попытки? Наработки в виде кода? |
||
![]() |
![]() |
![]() |
#5 |
человек
Форумчанин
Регистрация: 11.05.2009
Сообщений: 517
|
![]()
http://adminland.ru/node/395
все дело в том что надо самому присваивать номер, потом как то из расписать, подписать и приплюсовать в результате. Я знаю как присвоить, но как их потом сравнивать и вообще какой алгоритм , последовательность ничего не могу придумать |
![]() |
![]() |
![]() |
#6 | |
человек
Форумчанин
Регистрация: 11.05.2009
Сообщений: 517
|
![]() Цитата:
Сначала я хотел по букве загонять в динамический массив. Потом решил создать 2 массива, и тупо вручную через цикл прибавлять их присвоенный индекс. т.е работать не с буквами , а с цифрами сразу. Все упирается в такие мелочи как: Как в строке индекс считать, ну например мне нужен символ 5 индекса. Если это например "А" то в массив 0-й элемент пойдет индекс 1, и тд... 5-я буква "В" значит в 4-й элемент пойдет индекс буквы 3 потом во втором массиве просто, ключ таким же образом прогнать Потом опять через цикл прогонять один массив с другим и приплюсовывать как по алгоритму шифра, учитывая все условия. |
|
![]() |
![]() |
![]() |
#7 |
человек
Форумчанин
Регистрация: 11.05.2009
Сообщений: 517
|
![]() Код:
array type required что это значит? гуглил, не понял... |
![]() |
![]() |
![]() |
#8 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,429
|
![]()
index типа integer, Вы же пытаетесь обратиться к j-ому элемента массива index (как к массиву).
Параметр функции GetcharOut перекрывает глобальную переменную index.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#9 |
человек
Форумчанин
Регистрация: 11.05.2009
Сообщений: 517
|
![]() |
![]() |
![]() |
![]() |
#10 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,429
|
![]()
Набросал:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() Последний раз редактировалось BDA; 14.04.2013 в 17:55. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Шифр | SYSSI | Безопасность, Шифрование | 4 | 13.05.2011 19:00 |
Шифр? | KoBRaAndrey | Работа с сетью в Delphi | 0 | 12.12.2009 16:16 |
Шифр | Progs1024 | Паскаль, Turbo Pascal, PascalABC.NET | 9 | 12.10.2009 19:51 |
че за шифр? | Анастасия123456789 | Помощь студентам | 4 | 11.05.2009 19:19 |
Шифр | Razora | Свободное общение | 10 | 26.06.2007 15:52 |