![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 12.12.2012
Сообщений: 1
|
![]()
Прошу помочь в написании домашнего задания по алгоритмическим языкам, мыслей нет совершенно, но сдать очень нужно, иначе армия! заранее всем спасибо!
1) Разработать программу для реализации алгоритма шифрования и расшифрования данных, используя метод гаммирования и поразрядного циклического сдвига. Алгоритм: для блока данных заданного размера берется такого же размера фрагмент гаммы и выполняется операция поразрядного исключающего «ИЛИ», далее, выполняется операция поразрядного циклического сдвига на заданное число бит влево или вправо с полученным новым блоком. Расшифрование выполняется в обратном порядке, вначале циклический сдвиг в противоположную сторону, а затем операция поразрядного исключающего «ИЛИ» с блоками той же самой гаммы. Для получения гаммы можно использовать стандартный генератор псевдослучайный чисел (функцию rand, функция rand() генерирует воспроизводимую последовательность псевдослучайных чисел, при каждом обращении к функции возвращается целое в интервале между нулем и значением RAND_MAX, которое в любой реализации должно быть не меньше числа 32767, обратить внимание, при величине обрабатываемого блока данных 4 байта, возможно, для заполнения блока гаммы использовать два вызова функции), для начальной инициализации генератора использовать функцию srand (значение начальной инициализации является частью секретного ключа, другой частью ключа является размер поразрядного сдвига и его направление). Шифруемые данные хранить в программе в виде строки (можно сохранять в файле и читать из файла). условия: Циклический сдвиг влево; Величина сдвига в битах равна 2; Размер обрабатываемого блока данных равен 4 байтам 2) Используя результаты, полученные в пункте (1), разработать оконное Win32 приложение, содержащее главное окно с меню, реализующее функции простейшего текстового редактора с функциями криптозащиты. Основные реализуемые функции: ввод текста в одну строку, перерисовка текста, ввод секретного пароля (значение для инициализации генератора псевдослучайных чисел), сохранение зашифрованного текста в файле, чтение зашифрованного текста из файла. Дополнительные функции (оцениваются дополнительными баллами): ввод текста в несколько строк, использование полос прокрутки, использование диалоговых окон «Открыть файл», «Сохранить файл» и др. |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]() Цитата:
1) Напишите функцию EncryptRound, которая принимает три 32-битных числа, и делает XOR первых двух, а затем циклический сдвиг на третье влево, если третье число положительно и вправо на минус третье, если оно отрицательно и возвращает результат. 2) Напишите функцию Encrypt, которая принимает блок текста, его размер и два 32-битных числа (инициализатор и сдвиг). Пусть она вызывает srand(инициализатор), создаёт новый "выходной" блок памяти того же размера (если размер не кратен 4, следует увеличить его до кратного 4), после чего в цикле берёт из переданного блока памяти очередные 4 байта, интерпретируя их как число, создаёт число "ключа" одним или несколькими последовательными вызовами rand() (пусть пока одним), вызывает EncryptRound((число из блока памяти), (ключ), (сдвиг)) и записывает возвращаемое значение в соответствующее место выходного блока. Encrypt возвращает выходной блок. 3) Напишите функцию DecryptRound, "обратную" EncryptRound (те же аргументы; выполняется сдвиг в противоположную сторону, затем XOR). 4) Напишите функцию Decrypt, во всём аналогичную Encrypt, кроме того, что она вызывает DecryptRound, а не EncryptRound. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Криптография бд | Гроб | Помощь студентам | 1 | 20.05.2012 19:36 |
криптография | Kukurudza | Общие вопросы C/C++ | 1 | 11.09.2011 11:32 |
Криптография | Shurik(c) | Помощь студентам | 1 | 13.06.2011 13:27 |
Криптография | metallist85 | Общие вопросы Delphi | 5 | 28.10.2010 09:30 |
Криптография | helpme | Помощь студентам | 8 | 10.11.2007 14:43 |