Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2011, 05:42   #1
dual-core
Новичок
Джуниор
 
Аватар для dual-core
 
Регистрация: 28.10.2011
Сообщений: 1
По умолчанию Программа "шифр перестановки" на Pascal

Необходимо написать программу, которая позволяет зашифровывать и расшифровывать сообщение с помощью шифра перестановки. Если есть светлые умы, помогите люди добрые
dual-core вне форума Ответить с цитированием
Старый 28.10.2011, 08:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Что такое шифр перестановки?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.10.2011, 11:04   #3
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что такое шифр перестановки?
Можно посмотреть хотя бы в Вики.

dual-core,
Первое и важное соображение: в большинстве шифров (хотя есть отдельные извращенцы) перестановка происходит в пределах некоторого блока, причём сами блоки не переставляются местами. Соответственно, процедуры Decrypt/Encrypt проще всего описать как принимающие блок фиксированного размера. Базовая программа должна последовательно давать им эти блоки и получать обратно их изменёнными. Соответственно, последний кусок текста может быть меньше размера блока, классическое решение - "добить" его чем-нибудь (скажем, последовательностью "абвгдеёжз...") до нужного размера.

Второе соображение: стоит сразу взять за правило, что у алгоритма шифрования есть ключ. Соответственно, Encrypt/Decrypt должны также принимать на вход объект ключа и производить перестановку, опираясь на него. Ключ, впрочем, может быть достаточно сложным объектом.

Третье соображение: перестановка последовательности известной длины - это правило, по которому буквы переезжают с места на место. Одним из популярных вариантов задания перестановок является массив новых позиций (т.е. на первом месте стоит позиция, на которую переедет первый символ, на втором - позиция, на которую переедет второй и т.д.). Соответственно, если у нас есть входной массив длины n, массив перестановки длины n и (пустой) выходной массив длины n, выходной массив будет формироваться следующим образом: последовательно, для каждого элемента входного массива, взять соответствующий элемент массива перестановки (в котором записан новый индекс) и записать такое же значение в выходной массив по этому индексу.

Четвёртое соображение: за ключ при этом можно взять сам массив перестановки. Для расшифровывания (не путать с дешифровкой) тогда есть два варианта - либо мы создаём два ключа, зашифровывания и расшифровывания, а сама процедура одна и та же, либо в процедуру расшифровывания передаётся тот же ключ, но вместо получения из массива перестановки элемента по тому же индексу, что и во входном массиве, каждый раз надо будет искать, по какому индексу в массиве перестановки находится число, равное нынешнему индексу.
Проиллюстрирую. Первый вариант (размер блока n=11):
Цитата:
Ключ зашифровывания (индексы от 1) - (3, 7, 2, 9, 8, 1, 4, 11, 5, 6, 10)
Ключ расшифровывания (убедитесь, что последовательное применение к строке из 11 символов сперва одной, а потом другой перестановки даст исходный текст) - (6, 3, 1, 7, 9, 10, 2, 5, 4, 11, 8)
Текст: "Мама мыла раму в доме"
По блокам: "Мама мыла р" "аму в домеа"
После зашифровывания: "ммМыа а арл" " уадмемв ао"
Объединённый текст (шифртекст): "ммМыа а арл уадмемв ао"
(Ключ расшифровывания по ключу зашифровывания можно получить, если с его помощью переставить тождественную перестановку (1, 2, 3, ..., n)).

Вопрос качества ключей, наверное, пока рассматривать не стоит.
Abstraction вне форума Ответить с цитированием
Старый 28.10.2011, 15:33   #4
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

И что у вас не получается? Программа же не очень сложная!
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 25.01.2013, 12:05   #5
slon24
Новичок
Джуниор
 
Регистрация: 25.01.2013
Сообщений: 1
По умолчанию

Здравствуйте Все. Помогите пожалуйста составить план курсовой работы на тему: "Реализация шифра простой перестановки с помощью языка программирования Pascal". Это для первого курса.
slon24 вне форума Ответить с цитированием
Старый 25.01.2013, 12:52   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

То есть?
1) Шифры (общие понятия). Шифры перестановки и замены.
2) Шифр простой замены (описание, теория).
3) Пример реализации.
4) Анализ устойчивости.
5) Заключение.
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль.Программа "Верификация", "Кака бригадиру разделить заработанные деньги?".Сложные Valik102 Помощь студентам 11 23.06.2009 15:30
Паскаль.Программа "Верификация", "Кака бригадиру разделить заработанные деньги?".Сложные Valik102 Паскаль, Turbo Pascal, PascalABC.NET 3 23.06.2009 09:11
Паскаль. 2 задачи (Программа "Верификация","КАК БРИГАДИРУ РАЗДЕЛИТЬ ЗАРОБОТАННЫЕ ДЕНЬГИ") Valik102 Помощь студентам 3 20.05.2009 20:42
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51