Разработка программы для шифрования с использованием гаммирования
Создание программного продукта, выполняющего шифрование и дешифрование текста, введенного в Windows-форму с использованием гаммирования. Проблема сжатия информации. Достоинства и недостатки шифрования методом гаммирования. Выбор средств реализации.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 22.12.2013 |
Размер файла | 643,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
ДОНБАССКАЯ ГОСУДАРСТВЕННАЯ МАШИНОСТРОИТЕЛЬНАЯ АКАДЕМИЯ
КАФЕДРА КОМПЬЮТЕРНЫХ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
Курсовая работа по дисциплине
"Теория алгоритмов"
ТЕМА: " Разработка программы для шифрования с использованием гаммирования".
Выполнил: студент группы ИТ 12 - 2
Лиховой Д.Г.
Руководитель: Богдан М.П.
г. Краматорск 2013 г.
Содержание
- 1. Введение
- 1.1 Проблема сжатия информации
- 1.2 Алгоритм сжатия методом Хаффмана
- 1.3 Пример реализации метода Хаффмана
- 1.4 Недостатки метода Хаффмана
- 2. Шифрование методом гаммирования
- 2.1 Описание шифра
- 2.2 Достоинства и недостатки шифра
- 2.3 Датчики псевдослучайных чисел (ПСЧ).
- 2.3.1 Конгруэнтные датчики
- 2.3.2 Датчики М-последовательностей
- 2.4 Гаммирование с обратной связью
- 3. Разработка программного продукта
- 3.1 Современные требования к программным продуктам.
- 3.2 Предполагаемая структура разрабатываемого ПП
- 3.3 Обоснование выбора средств реализации
- 3.4 Функциональная схема
- 3.5 Алгоритмы шифрования и дешифрования
- Выводы
- Список использованной литературы
- Приложение А
Задаhие на курсовую работу по дисциплине "Теория алгоритмов"
Группа ИТ 12 - 2 вариант № 7/ 9
Лиховой Дмитрий Геннадиевич
Задание на выполнение курсовой работы
1. Выполнить работу на тему: "Разработать программу для шифрования с использованием гаммирования".
2. Написать вступление на тему: "Коды Хаффмана. "
3. Создать справочную систему к программному продукту.
4. Курсовую работу необходимо выполнить в сроки и с контрольными точками в соответствии с семестровым графиком (см. файл "Гр. мод. (ИТ12-1,2) курсов. doc") и требованиями к выполнению курсовой работы по теории алгоритмов.
5. Изменение и уточнение темы с согласия руководителя курсовой работы возможны только до 30.09.13 г.
6. Готовая работа сдается на проверку не позже, чем за два дня до защиты.
Задание получил: ______________ Лиховой Д.Г.
(подпись студента)
Задание выдал: _____________ М.П. Богдан
(подпись руководителя)
Дата выдачи __12__ сентября 2013 г
Аннотация
Курсовая работа по дисциплине "Теория алгоритмов" на тему: " Разработать программу для шифрования с использованием гаммирования." студента группы ИТ12-2 Лихового Дмитрия Геннадиевича. содержит 28 страниц машинописного (рукописного) текста, 10 рисунков, 3 таблицы, 5 страниц приложения.
В работе рассмотрена принцип шифрования методом гаммирования, его разновидности и условия применения, также реализована программа с использованием линейного конгруэнтного метода генерирования псевдослучайных чисел.
ТЕОРИЯ АЛГОРИТМОВ, ГАММА, КОДЫ ХАФФМАНА, ГРАФ, ПСЧ, КОДИРОВКА, БИТ, БАЙТ, КРИПТОСИСТЕМА, КЛЮЧ, ASCII.
1. Введение
1.1 Проблема сжатия информации
Сжатие информации - проблема, имеющая достаточно давнюю историю, гораздо более давнюю, нежели история развития вычислительной техники, которая обычно шла параллельно с историей развития проблемы кодирования и шифровки информации.
Все алгоритмы сжатия оперируют входным потоком информации, минимальной единицей которой является бит, а максимальной - несколько бит, байт или несколько байт.
Целью процесса сжатия, как правило, есть получение более компактного выходного потока информационных единиц из некоторого изначально некомпактного входного потока при помощи некоторого их преобразования.
Основными техническими характеристиками процессов сжатия и результатов их работы являются:
степень сжатия (compress rating) или отношение (ratio) объемов исходного и результирующего потоков;
скорость сжатия - время, затрачиваемое на сжатие некоторого объема информации входного потока, до получения из него эквивалентного выходного потока;
качество сжатия - величина, показывающая на сколько сильно упакован выходной поток, при помощи применения к нему повторного сжатия по этому же или иному алгоритму.
Кодирование Хаффмана является простым алгоритмом для построения кодов с переменной длиной, имеющих минимальную среднюю длиной. Этот весьма популярный алгоритм служит основой многих компьютерных программ сжатия текстовой и графической информации. Некоторые из них используют непосредственно алгоритм Хаффмана, а другие берут его в качестве одной из степеней многоуровневого процесса сжатия.
1.2 Алгоритм сжатия методом Хаффмана
Простейшими кодами, на основе которых может выполняться сжатие данных, являются коды без памяти. В коде без памяти каждый символ в кодируемом векторе данных заменяется кодовым словом из префиксного множества двоичных последовательностей или слов.
Префиксным множеством двоичных последовательностей S называется конечное множество двоичных последовательностей, таких, что ни одна последовательность в этом множестве не является префиксом, или началом, никакой другой последовательности в S.
К примеру, множество двоичных слов S1 = {00, 01, 100, 110, 1010, 1011} является префиксным множеством двоичных последовательностей, поскольку, если проверить любую из 30 возможных совместных комбинаций (wi wj) из S1, то видно, что wi никогда не явится префиксом (или началом) wj. С другой стороны, множество S2 = { 00, 001, 1110 } не является префиксным множеством двоичных последовательностей, так как последовательность 00 является префиксом (началом) другой последовательности из этого множества - 001.
Таким образом, если необходимо закодировать некоторый вектор данных X = (x1, x2,…xn) с алфавитом данных A размера k, то кодирование кодом без памяти осуществляется следующим образом:
составляют полный список символов a1, a2, aj.,ak алфавита A, в котором aj - j-й по частоте появления в X символ, то есть первым в списке будет стоять наиболее часто встречающийся в алфавите символ, вторым - реже встречающийся и т.д.;
каждому символу aj назначают кодовое слово wj из префиксного множества двоичных последовательностей S;
выход кодера получают объединением в одну последовательность всех полученных двоичных слов.
Идея, положенная в основу кодировании Хаффмана, основана на частоте появления символа в последовательности. Символ, который встречается в последовательности чаще всего, получает новый очень маленький код, а символ, который встречается реже всего, получает, наоборот, очень длинный код. Это нужно, так как мы хотим, чтобы, когда мы обработали весь ввод, самые частотные символы заняли меньше всего места (и меньше, чем они занимали в оригинале), а самые редкие - побольше (но так как они редкие, это не имеет значения).
1.3 Пример реализации метода Хаффмана
Предположим, у нас есть строка "beep boop beer!", для которой, в её текущем виде, на каждый знак тратится по одному байту. Это означает, что вся строка целиком занимает 15*8 = 120 бит памяти. После кодирования строка займёт 40 бит (на практике, в нашей программе мы выведем последовательность из 40 нулей и единиц, представляющих собой биты кодированного текста. Чтобы получить из них настоящую строку размером 40 бит, нужно применять битовую арифметику).
Чтобы получить код для каждого символа на основе его частотности, нам надо построить бинарное дерево, такое, что каждый лист этого дерева будет содержать символ (печатный знак из строки). Дерево будет строиться от листьев к корню, в том смысле, что символы с меньшей частотой будут дальше от корня, чем символы с большей. Скоро вы увидите, для чего это нужно. Чтобы построить дерево, мы воспользуемся слегка модифицированной очередью с приоритетами - первыми из неё будут извлекаться элементы с наименьшим приоритетом, а не наибольшим. Это нужно, чтобы строить дерево от листьев к корню.
Для начала посчитаем частоты всех символов:
Таблица 1. - Частота появления символов в примере После вычисления частот мы создадим узлы бинарного дерева для каждого знака и добавим их в очередь, используя частоту в качестве приоритета:
Символ |
Частота |
|
'b' |
3 |
|
'e' |
4 |
|
'p' |
2 |
|
' ' |
2 |
|
'o' |
2 |
|
'r' |
1 |
|
'! ' |
1 |
Рисунок 1. - Лента с входным алфавитом
Теперь мы достаём два первых элемента из очереди и связываем их, создавая новый узел дерева, в котором они оба будут потомками, а приоритет нового узла будет равен сумме их приоритетов. После этого мы добавим получившийся новый узел обратно в очередь.
Рисунок 2. - Построение бинарного дерева с помощью ленты входного алфавита
Повторим те же шаги и получим последовательно:
Рисунок 3. - Построение бинарного дерева с помощью ленты входного алфавита
Рисунок 4. - Построение бинарного дерева с помощью ленты входного алфавита
Рисунок 5. - Построение бинарного дерева с помощью ленты входного алфавита
гаммирование шифрование программный продукт
Рисунок 6. - Построение бинарного дерева с помощью ленты входного алфавита Ну и после того, как мы свяжем два последних элемента, получится итоговое дерево:
Рисунок 7. - Построение бинарного дерева с помощью ленты входного алфавита Теперь, чтобы получить код для каждого символа, надо просто пройтись по дереву, и для каждого перехода добавлять 0, если мы идём влево, и 1 - если направо:
Рисунок 8. - Готовое бинарное дерево Если мы так сделаем, то получим следующие коды для символов:
Таблица 2. Таблица Хаффмана для данного алфавита Чтобы расшифровать закодированную строку, нам надо, соответственно, просто идти по дереву, сворачивая в соответствующую каждому биту сторону до тех пор, пока мы не достигнем листа. Например, если есть строка "101 11 101 11" и наше дерево, то мы получим строку "pepe".
Символ |
Код |
|
'b' |
00 |
|
'e' |
11 |
|
'p' |
101 |
|
' ' |
011 |
|
'o' |
010 |
|
'r' |
1000 |
|
'! ' |
1001 |
Важно иметь в виду, что каждый код не является префиксом для кода другого символа. В нашем примере, если 00 - это код для 'b', то 000 не может оказаться чьим-либо кодом, потому что иначе мы получим конфликт.
На практике, при реализации данного алгоритма сразу после построения дерева строится таблица Хаффмана. Данная таблица - это по сути связный список или массив, который содержит каждый символ и его код, потому что это делает кодирование более эффективным. Довольно затратно каждый раз искать символ и одновременно вычислять его код, так как мы не знаем, где он находится, и придётся обходить всё дерево целиком. Как правило, для кодирования используется таблица Хаффмана, а для декодирования - дерево Хаффмана.
Входная строка: "beep boop beer!" Входная строка в бинарном виде: "0110 0010 0110 0101 0110 0101 0111 0000 0010 0000 0110 0010 0110 1111 0110 1111 0111 0000 0010 0000 0110 0010 0110 0101 0110 0101 0111 0010 0010 000" Закодированная строка: "0011 1110 1011 0001 0010 1010 1100 1111 1000 1001"
1.4 Недостатки метода Хаффмана
Самой большой сложностью с кодами Хаффмена, как следует из предыдущего обсуждения, является необходимость иметь таблицы вероятностей для каждого типа сжимаемых данных. Это не представляет проблемы, если известно, что сжимается английский или русский текст; мы просто предоставляем кодеру и декодеру подходящее для английского или русского текста кодовое дерево. В общем же случае, когда вероятность символов для входных данных неизвестна, статические коды Хаффмена работают неэффективно.
Решением этой проблемы является статистический анализ кодируемых данных, выполняемый в ходе первого прохода по данным, и составление на его основе кодового дерева. Собственно кодирование при этом выполняется вторым проходом.
Еще один недостаток кодов Хаффмена - это то, что минимальная длина кодового слова для них не может быть меньше единицы, тогда как энтропия сообщения вполне может составлять и 0,1, и 0,01 бит/букву. В этом случае код Хаффмена становится существенно избыточным. Проблема решается применением алгоритма к блокам символов, но тогда усложняется процедура кодирования/декодирования и значительно расширяется кодовое дерево, которое нужно в конечном итоге сохранять вместе с кодом.
Наконец, код Хаффмена обеспечивает среднюю длину кода, совпадающую с энтропией, только в том случае, когда вероятности символов источника являются целыми отрицательными степенями двойки: 1/2 = 0,5; 1/4 = 0,25; 1/8 = 0,125; 1/16 = 0,0625 и т.д. На практике же такая ситуация встречается очень редко или может быть создана блокированием символов со всеми вытекающими отсюда последствиями.
2. Шифрование методом гаммирования
2.1 Описание шифра
В основе рассматриваемых систем шифрования лежит метод "наложения" ключевой последовательности - гаммы - на открытый текст. "Наложение" заключается в позначном (побуквенном) сложении или вычитании по тому или иному модулю. В силу простоты своей технической реализации и высоких криптографических качеств эти шифры получили широкое распространение. Иногда такой метод представляют как наложение гаммы на исходный текст, поэтому он получил название "гаммирование".
Гаммирование является также широко применяемым криптографическим преобразованием. На самом деле граница между гаммированием и использованием бесконечных ключей и шифров Вижинера, весьма условная.
Принцип шифрования гаммированием заключается в генерации гаммы шифра с помощью датчика псевдослучайных чисел и наложении полученной гаммы на открытые данные обратимым образом.
Процесс дешифрования данных сводится к повторной генерации гаммы шифра при известном ключе и наложении такой гаммы на зашифрованные данные.
Полученный зашифрованный текст является достаточно трудным для раскрытия в том случае, если гамма шифра не содержит повторяющихся битовых последовательностей. По сути дела гамма шифра должна изменяться случайным образом для каждого шифруемого слова. Фактически же, если период гаммы превышает длину всего зашифрованного текста и неизвестна никакая часть исходного текста, то шифр можно раскрыть только прямым перебором. Криптостойкость в этом случае определяется размером ключа.
Метод гаммирования становится бессильным, если злоумышленнику становится известен фрагмент исходного текста и соответствующая ему шифрограмма. Простым вычитанием по модулю получается отрезок псевдослучайной последовательности (ПСП) и по нему восстанавливается вся последовательность.
2.2 Достоинства и недостатки шифра
К достоинствам шифров гаммирования следует отнести следующее:
Возможность достижения высоких скоростей шифрования.
Коэффициент размножения ошибки равен единице.
Поточность шифрования и дешифрования.
Сохранение размера текста при шифровании
Колонная замена, т.е. каждому символу сообщения соответствует символ из колонки блокнота, соответствующей номеру позиции символа в сообщении. Метод хорош тем, что при ошибочном приеме символа (что вполне может случиться), смысл дешифрованного сообщения искажается лишь на ошибочный символ.
К недостаткам относится:
Нестойкость шифра при повторном использовании ключа
Последовательность доступа к информации
2.3 Датчики псевдослучайных чисел (ПСЧ).
Чтобы получить линейные последовательности элементов гаммы, длина которых превышает размер шифруемых данных, используются датчики ПСЧ. На основе теории групп было разработано несколько типов таких датчиков.
2.3.1 Конгруэнтные датчики
В настоящее время наиболее доступными и эффективными являются конгруэнтные генераторы ПСЧ. Для этого класса генераторов можно сделать математически строгое заключение о том, какими свойствами обладают выходные сигналы этих генераторов с точки зрения периодичности и случайности.
Одним из хороших конгруэнтных генераторов является линейный конгруэнтный датчик ПСЧ. Он вырабатывает последовательности псевдослучайных чисел T (i), описываемые соотношением
T (i+1) = (A*T (i) +C) mod m,
где А и С - константы, Т (0) - исходная величина, выбранная в качестве порождающего числа. Очевидно, что эти три величины и образуют ключ.
Такой датчик ПСЧ генерирует псевдослучайные числа с определенным периодом повторения, зависящим от выбранных значений А и С. Значение m обычно устанавливается равным 2n, где n - длина машинного слова в битах. Датчик имеет максимальный период М до того, как генерируемая последовательность начнет повторяться. По причине, отмеченной ранее, необходимо выбирать числа А и С такие, чтобы период М был максимальным. Как показано Д. Кнутом, линейный конгруэнтный датчик ПСЧ имеет максимальную длину М тогда и только тогда, когда С - нечетное, и А mod 4 = 1.
Для шифрования данных с помощью датчика ПСЧ может быть выбран ключ любого размера. Например, пусть ключ состоит из набора чисел x (j) размерностью b, где j=1, 2,., n. Тогда создаваемую гамму шифра G можно представить как объединение непересекающихся множеств H (j).
2.3.2 Датчики М-последовательностей
М-последовательности также популярны, благодаря относительной легкости их реализации.
М-последовательности представляют собой линейные рекуррентные последовательности максимального периода, формируемые k-разрядными генераторами на основе регистров сдвига. На каждом такте поступивший бит сдвигает k предыдущих и к нему добавляется их сумма по модулю 2.
Период М-последовательности исходя из ее свойств равен 2k-1.
Другим важным свойством М-последовательности является объем ансамбля, т.е. количество различных М-последовательностей для заданного k. Эта характеристика приведена в таблице 3.1
Таблица 3. - Период повторения М-последовательности
k |
Объем ансамбля |
|
5 |
6 |
|
6 |
8 |
|
7 |
18 |
|
8 |
16 |
|
9 |
48 |
|
10 |
60 |
|
16 |
2048 |
Очевидно, что такие объемы ансамблей последовательности неприемлемы.
Поэтому на практике часто используют последовательности Голда, образующиеся суммированием нескольких М-последовательностей. Объемы ансамблей этих последовательностей на несколько порядков превосходят объемы ансамблей порождающих М-последовательностей. Так при k=10 ансамбль увеличивается от 1023 (М-последовательности) до 388000.
Также перспективными представляются нелинейные датчики ПСЧ (например сдвиговые регистры с элементом "И" в цепи обратной связи), однако их свойства еще недостаточно изучены.
2.4 Гаммирование с обратной связью
Режим простого гаммирования позволяет злоумышленнику воздействовать на исходный текст путем изменения битов шифрованного текста, т.к. шифрование производится побитово. Изменив один бит в зашифрованном тексте на противоположный, получим изменение того же бита в расшифрованном тексте. Гаммирование с обратной связью позволяет зацепить блоки один за другой и любое изменение хотя бы одного бита в каком-либо месте шифротекста повлечет за собой при расшифровке повреждение информации во всех последующих блоках, что легко заметить.
Гаммирование с обратной связью отличается от простого гаммирования тем, что очередной элемент гаммы вырабатывается как результат преобразования по циклу шифрования предыдущего блока зашифрованных данных, а для шифрования первого блока массива данных элемент гаммы вырабатывается как результат преобразования по тому же циклу синхропосылки. На стойкость шифра зацепление блоков не оказывает никакого влияния.
Отличие формирование гаммы в таком виде шифра заключается в том, что для формирования гаммы каждой последующей буквы будет использоваться контрольная сумма предыдущей.
Для генерации гаммы используется формула
Ti+1 = (A*Ti+C) mod M.
A,C - константы (целые числа < M).
T0 - начальное значение
К примеру есть заданный алфавит:
A B C D E F G H - знаки открытого текста 0 1 2 3 4 5 6 7 - номер (код)
000 001 010 011 100 101 110 111 - (двоичный код)
Нам нужно зашифровать текст ABC
Генерируем число по формуле: A=5, C=3, T0=7, M=8 (длина алфавита) T1= (5*7+3) mod 8 = 6 (в битовом представлении - 011)
То есть на букву А (000) мы будем налаживать T1 (011).
T2 формируется по такой же формуле и с теми же значениями, но место T0 должно выбираться другое значение, которое формируется из предыдущей буквы (она у нас А): будем подсчитывать единицы в двоичном коде. То есть, для буквы А код 000. Значит, для генерации T2 используем значение T0 = 0.
T2 = (5*0+3) mod8=3 (010)
3. Разработка программного продукта
3.1 Современные требования к программным продуктам.
К современным программным продуктам (далее ПП) предъявляется ряд требований. Современные ПП должны обладать дружественным интерфейсом, позволяющим пользователю просто работать с приложением, а не теряться в догадках о назначении той или иной кнопки или другого элемента управления. В идеале приложение должно очень корректно и последовательно "проводить" пользователя от этапа ввода данных до получения конкретного результата. Приложение должно обладать развитой системой поддержки пользователя, а именно справочной подсистемой, грамотно изложенным руководством пользователя и так далее. Для обеспечения этих и других требований используется стандартизованный, интуитивно-понятный интерфейс, принятый во многих графических операционных системах, что позволяет пользователю начинать работу с приложением не с изучения назначений его элементов управления, а непосредственно с изучения предметной области, в которой функционирует приложение, с тем, чтобы сразу после этого приступить к работе с приложением.
3.2 Предполагаемая структура разрабатываемого ПП
Программа любого шифрования должна состоять как минимум из 2 частей: само шифрование и дешифрование.
Часть 1 (шифрование):
Рисунок 9. - Схема шифрования методом гаммирования
Часть 2 (дешифрование):
Рисунок 10. - Схема дешифрования методом гаммрования
3.3 Обоснование выбора средств реализации
В настоящее время существует большой выбор средств разработки приложений на платформе операционной системы Windows. Язык программирования Visual C++ из среды разработки Visual Studio компании Microsoft наиболее мощное средство разработки системных программ. Однако, разработка программ на этом языке - трудоемкий и сложный процесс, но функциональность, предоставляемая программисту, очень разнообразна и позволяет найти подход более простым алгоритмом.
Одна из таких функции будет продемонстрирована в моей программе, а именно Windows Forms, которая позволяет сделать интерфейс с пользователем максимально удобным и простым.
3.4 Функциональная схема
Рисунок 11. - Блок - схема программы в общем виде.
Рисунок 12. - Блок - схема шифрования.
Рисунок 13. Блок - схема дешифрования.
3.5 Алгоритмы шифрования и дешифрования
В основе как алгоритма шифрования так и дешифрования стоит возможность достаточно просто переводить исходный текст в массив бит. Зная шифр или зашифрованную цепочку программа преобразовывает данный текст в цепочку бит. Вторым действием является создание самой гаммы. После введенных начальных значений, по формуле T [i] = (A * T [i-1] + C) mod M находим гамму и с помощью операции побитового исключающего "или" складываем цепочку ПСЧ и цепочку введенную пользователем.
ЭКРАНИЗАЦИЯ ЭКРАНЫХ ФОРМ
При запуске программы появляется диалоговое окно, в котором пользователю предлагается ввести значения для формирования датчика случайных чисел (ПСЧ). При ошибочном вводе как ПСЧ так и строки для дешифрования программа будет перезапущена.
Заполнение формы шифрования производится на английском языке и может иметь различные данные (цифры, буквы, символы). Дешифрование же по данному методу представляет собой окончательное множество чисел, потому форму нужно заполнять правильно.
Вывод результатов происходит сразу же в диалоговом окне справа. Ниже я привел пример.
а) Шифрование:
Рисунок 14. - Шифрование в моей программе.
б) Дешифрование:
Рисунок 15. - Дешифрование в моей программе.
Выводы
В результате выполнения курсовой работы по теории алгоритмов мной был создан программный продукт, выполняющий шифрование и дешифрование текста, введенного в Windows-форму с использованием гаммирование. Проект был разработан с помощью средств языка программирования C#. Данная программа имеет легкодоступный и понятный интерфейс и позволяет пользователю быстро зашифровать или расшифровать сообщение.
При разработке программного продукта я приобрел дополнительные навыки разработки программного обеспечения на языке C# в среде Visual Studio, что дает возможность писать различное ПО просто и быстро.
Также были изучены основы шифрования различными методами, в частности шифры гаммирования. Секретность шифров гаммирования зависит от подбора ключа, а потому правильно подобрав его можно получить достаточно сложный шифр. Я считаю, что в ситуациях, не требующих высокой конфиденциальности данных, он является одним из лучших вариантов выбора шифра.
Список использованной литературы
1. http://www.rsdn.ru/article/crypto/gost28147_1. xml
2. Джефф П.Р. Электроника, 1973, т.46,N1 - шифрование данных методом гаммирования.
3. http://t. sinkler.ru/content/ti/12.html
4. Хоффман Л. Дж. Современные методы защиты информации.М., Сов. радио, 1980 - наиболее полная и серьезная монография по теории и практике защиты информации
5. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования ГОСТ 28147-89. Гос. Ком. СССР по стандартам, М., 1989.
6. http://bre.ru/security/19037.html
Приложение А
Размещено на Allbest.ru
...Подобные документы
Особенности шифрования данных, предназначение шифрования. Понятие криптографии как науки, основные задачи. Анализ метода гаммирования, подстановки и метода перестановки. Симметрические методы шифрования с закрытым ключом: достоинства и недостатки.
курсовая работа [564,3 K], добавлен 09.05.2012Методы шифрования данных. Криптосхема, реализующая алгоритм зашифрования в режиме гаммирования. Визуальное представление, схема приемника и передатчика. Расшифровывание зашифрованных данных в режиме гаммирования. Стойкость и возможности обхождения шифра.
реферат [823,8 K], добавлен 26.12.2011Криптография и шифрование. Симметричные и асимметричные криптосистемы. Основные современные методы шифрования. Алгоритмы шифрования: замены (подстановки), перестановки, гаммирования. Комбинированные методы шифрования. Программные шифраторы.
реферат [57,7 K], добавлен 24.05.2005Исследование системы распределения ключей на основе линейных преобразований. Описание компонентов сети конфиденциальной связи. Характеристика отечественного алгоритма шифрования данных. Обзор результатов расчетов криптостойкости алгоритма шифрования.
контрольная работа [56,5 K], добавлен 26.09.2012История появления и развития шифрования текста. Проблема шифрования и дешифрования текстовых сообщений в современности. Создание программы для зашифровки и расшифровки вводимого текста пятью методами: Атбаш, Цезаря, Полибия, Гронсфельда и Винжера.
курсовая работа [923,6 K], добавлен 26.12.2011Понятие шифров сложной замены. Шифры сложной замены называют многоалфавитными. Данная подстановка последовательно и циклически меняет используемые алфавиты. Понятие схемы шифрования Вижинера. Стойкость шифрования методом гаммирования и свойство гаммы.
реферат [52,2 K], добавлен 22.06.2010Функциональное и эксплуатационное назначение данного изделия. Требования к составу и параметрам технических средств. Описание алгоритма ГОСТ 28147-89 в режиме гаммирования. Технико-экономические показатели разработки. Интерфейс программного продукта.
курсовая работа [1,7 M], добавлен 27.02.2015Симметричные и асиметричные методы шифрования. Шифрование с помощью датчика псевдослучайных чисел. Алгоритм шифрования DES. Российский стандарт цифровой подписи. Описание шифрования исходного сообщения асимметричным методом с открытым ключом RSA.
курсовая работа [101,1 K], добавлен 09.03.2009Разработка программы, позволяющей реализовать шифрование и дешифрование текстового файла методом замены и методом перестановки. Требования к функциональным характеристикам, надежности, составу и параметрам технических средств ПО. Интерфейс пользователя.
курсовая работа [19,0 K], добавлен 30.04.2011Схема работы и требования к программам шифрования и дешифрования. Алгоритмы и тексты программы шифрования и программы дешифрования, выполненные на языке программирования C/C++. Содержание файла с исходным текстом, с шифротекстом, с дешифрованным текстом.
курсовая работа [24,7 K], добавлен 20.10.2014Автоматизация процесса шифрования на базе современных информационных технологий. Криптографические средства защиты. Управление криптографическими ключами. Сравнение симметричных и асимметричных алгоритмов шифрования. Программы шифрования информации.
курсовая работа [795,7 K], добавлен 02.12.2014Принцип программной реализации классических криптографических методов. Метод шифрования с использованием таблицы Виженера. Создание текстового редактора "Блокнот", содержащего методы шифрования. Вербальный алгоритм и программа для методов шифрования.
курсовая работа [2,0 M], добавлен 20.01.2010Разработка программы, реализующей процедуры шифрования и расшифрования текста по стандарту DES (Data Encryption Standard). Структура алгоритма шифрования, схема выработки ключевых элементов. Использование криптографического программного средства.
курсовая работа [1,7 M], добавлен 15.06.2013Проблема скрытия и защиты информации от несанкционированного использования. История создания шифра. Решения задачи шифрования текста и кодирования данных. Тестирование полученного приложения и анализ работы программы с точки зрения пользователя.
курсовая работа [3,0 M], добавлен 24.11.2013Реализация криптографического алгоритма шифрования и дешифрования с использованием шифра Виженера. Понятие и суть полиалфавитного шифра. Метод полиалфавитного шифрования буквенного текста с использованием ключевого слова. Взлом полиалфавитных шифров.
курсовая работа [863,0 K], добавлен 21.04.2012Основные инструменты и приемы для аутентификации клиента и шифрования информации. Шифрование и дешифрование методом одиночной и двойной перестановки, методом Кордано и Гронсфельда. Маловероятные сочетания букв и истинная последовательность столбцов.
курсовая работа [50,3 K], добавлен 23.12.2010Разработка криптографического алгоритма программы ручного шифра по таблице Виженера. Разработка программы, выполняющей шифрование и расшифрование. Особенности использования в качестве ключа самого открытого текста. Алгоритмы решения "обратных" задач.
курсовая работа [45,0 K], добавлен 13.11.2009Краткая характеристика библиотек: stdio.h, conio.h, string.h, stdafx.h. Шифр Плейфера как подстановка символов из таблицы, основные варианты. Структура программы playfer.exe. Создание таблицы перекодировки. Ввод, шифрование и дешифрование текста.
курсовая работа [216,7 K], добавлен 18.05.2013Анализ криптографических методов шифрования данных. Разработка криптосистемы, основанной на схеме Эль-Гамаля. Определение функциональных и нефункциональных требований. Выбор языка программирования и среды разработки. Тестирование программного продукта.
дипломная работа [1,6 M], добавлен 17.07.2016Разработка алгоритмов на персональном компьютере, среда Турбо Паскаль. Работа программы для шифровки и дешифровки текста. Алгоритм шифрования: с помощью команды ORD. Функция Password а преобразовании символа, введенного пользователем ключа в его числовой
курсовая работа [19,6 K], добавлен 17.10.2008