Программная реализация методы шифрования Цезаря и Вижинера

Автор работы: Пользователь скрыл имя, 23 Декабря 2013 в 20:24, курсовая работа

Краткое описание

Историческим примером шифра замены является шифр Цезаря (1 век до н.э.), описанный историком Древнего Рима Светонием. Гай Юлий Цезарь использовал в своей переписке шифр собственного изобретения. Применительно к современному русскому языку он состоял в следующем. Выписывался алфавит: А, Б, В, Г, Д, Е, ..., ; затем под ним выписывался тот же алфавит, но со сдвигом на 3 буквы влево.
Таким образом, можно утверждать, что основы криптологии были заложены еще в древности и, естественно, после многовекового развития нашли широкое применение в современной жизни.

Содержание

1. ВВЕДЕНИЕ……………………………………………………………………………………..3
1.1. Исторические основы криптологии………………………………………………… 4
1.2. Криптология в современном мире………………………………………………………..5
2. Криптология 7
2.1. Основные понятия криптологии 7
2.2. Требования к криптосистемам . 9
2.3. Симметрические криптосистемы………………………………………………………...10
2.3.1. Метод Цезаря………………………………………………………………………….12
2.3.2. Системы шифрования Вижинера…………………………………………………… 13
2.3.3. Гаммирование………………………………………………………………………….14
2.4. Криптография с открытым ключом………………………………………………………15
2.4.1. Система RSA…………………………………………………………………………..17
2.4.1.1. Генерация ключа………………………………………………………………….17
2.4.1.2. Шифрование/дешифрование……………………………………………………..18
2.4.2. Алгоритм Эль-Гамаля…………………………………………………………….…..19
2.4.2.1. Общие сведения…………………………………………………………………..19
2.4.2.2. Шифрование сообщений…………………………………………………………20
3. ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ КРИПТОЛОГИИ…………………………………21
3.1. Цифровая подпись………………………………………………………………………...21
3.1.1. Общие положения…………………………………………………………………….21
3.1.2. Алгоритм DSA………………………………………………………………………...23
3.2. Алгоритм DES………………………………………………………………………….…25
3..2.1. Генерация ключа……………………………………………………………………..25
4. ПОСТАНОВКА И РЕШЕНИЕ ЗАДАЧИ………………………………………………….26
4.1. Краткая характеристика среды Visual Studio 2010………………………………….....26
4.2. Алгоритм решения задачи…………………………………………………………….....27
4.2.1. Модуль программы…………………………………………………………………..27
4.2.2. Модуль шифровании/дешифрования……………………………………………….27
4.2.3. Процедура кодирования символа…………………………………………………...30
4.3. Результаты работы программы……………………………………… ………………….31
ЗАКЛЮЧЕНИЕ…………………………………………………………………………………33
СПИСОК ЛИТЕРАТУРЫ……………………………………………………………………..34

Прикрепленные файлы: 1 файл

Программная реализация методы шифрования.doc

— 2.41 Мб (Скачать документ)

С момента опубликования  проект получил много критических  отзывов, многие из которых были учтены при его доработке. Одним из главных аргументов против DSA является то, что, в отличие от общей задачи вычисления дискретного логарифма, ее частный случай, использованный в данной схеме, мало изучен и, возможно, имеет существенно меньшую сложность вскрытия. Кроме того, стандарт не специфицирует способ получения псевдослучайных чисел, используемых при формировании цифровой подписи, и не указывает на то, что этот элемент алгоритма является одним из самых критичных по криптографической стойкости.

Функции DSA ограничены только цифровой подписью, система принципиально не предназначена для шифрования данных. По быстродействию система DSA сравнима с RSA при формировании подписи, но существенно (в 10-40 раз) уступает ей при проверке подписи.

 

3.1.2.1. Генерация ЭЦП

При генерации  ЭЦП  используются параметры трех групп:

- общие параметры

- секретный ключ

- открытый ключ

Общие параметры необходимы для функционирования системы в  целом. Секретный ключ используется для формирования ЭЦП, а открытый – для проверки ЭЦП.

Общими параметрами  системы являются простые целые  числа p,q,g, удовлетворяющие следующим условиям:

p: 2^511<p<2^512

q: простой делитель  числа (p-1), который удовлетворяет  условию

2^159<q<2^160

g: так называемый генератор,  удовлетворяющий равенству

g=h^((p-1)/q)mod p >1.

Параметры p,q,g публикуются для всех участников обмена ЭД с ЭЦП.

Секретный ключ x случайно выбирается из диапазона [1,q] и держится в секрете.

Открытый ключ вычисляется:

y=g^x mod p.

Также при описании данной схемы будут использоваться следующие  обозначения и дополнительные параметры:

m – входное сообщение пользователя для схемы с ЭЦП; k -  случайное число, удовлетворяющее условию  0<k<q, хранящееся в секрете и меняющееся от одной подписи к другой; H – хэш-функция, h – хэш-код сообщения.

Процесс генерации ЭЦП  состоит из нескольких этапов:

1. Вычисляется хэш-код сообщения m

 

h=H(m)

2. Из диапазона [1,q] случайным образом  выбирается значение k и вычисляется

r= (g^k mod p) mod q

3. Вычисляется                        S= (k^-1(h+xr)) mod q,

где k^-1 удовлетворяет условию (k^-1*k) mod q =1

Значения r, s являются ЭЦП сообщения m  и передаются вместе с ним по каналам связи.

 

3.1.2.2. Проверка  ЭЦП

Пусть принято сообщение m1 и его подпись s1,r1.

Проверка ЭЦП происходит следующим образом:

  • Проверяется выполнение условий 0<r1<q, 0<s1<q,

и если хотя бы одно из них нарушено, подпись отвергается.

  • Вычисляются значения:   w= s1^-1 mod q

u1 = (H(m1)w) mod q

u2 = ((r1/w) mod q

v = (( g^u1y^u2) mod p ) mod q

  • Проверяется равенство v = r1

Если последнее равенство  выполняется, то подпись принимается. В данном стандарте специфицируется  также процедура генерации основных параметров системы и проводится доказательство того, что если v=r1, то m1=m, r1=r, s1=s.

 

3.2. Алгоритм DES

Принятие стандарта шифрования DES явилось мощным толчком к широкому применению шифрования в коммерческих системах. Введение этого стандарта - отличный пример унификации и стандартизации средств защиты. Примером системного подхода к созданию единой крупномасштабной системы защиты информации является директива Министерства финансов США 1984 года, согласно которой все общественные и частные организации, ведущие дела с правительством США, обязаны внедрить процедуру шифрования DES; крупнейшие банки Citibank,Chase Manhattan Bank, Manufaktures Hannover Trust, Bank of America, Security Pacific Bank также внедрили эту систему.

Министерство энергетики США располагает более чем 30 действующими сетями, в которых используется алгоритм DES, Министерство юстиции устанавливает 20000 радиоустройств, располагающих средствами защиты на базе DES. Стандартизация в последнее время приобретает международный характер, подтверждение тому - международный стандарт 1987 года ISO 8372, разработанный на основе криптоалгоритма DES.

В качестве стандартной аппаратуры шифрования можно назвать устройство Cidex-НХ, базирующееся на алгоритме DES; скорость шифрования - от 56 Кбит/с до 7 Мбит/с. Серийно выпускается автономный шифровальный блок DES 2000, в нем также используется процедура шифрования DES; скорость шифрования - от 38,4 Кбит/с до 110 Кбит/с. В различных секторах коммерческой деятельности используется процессор шифрования/дешифро-вания данных FACOM 2151А на основе алгоритма DES; скорость - от 2,4 Кбит/с до 19,2 Кбит/с. С распространением персональных компьютеров наиболее эффективными для них стали программные средства защиты. Так, разработан пакет программ для шифрования/дешифрования информации СТА (Computer Intelligence Access), реализующий алгоритм DES. Этот же алгоритм использован в пакете SecretDisk (C F Systems) для исключения несанкционированного доступа к дискам.

Таким образом, алгоритм DES представляет собой основной механизм, применявшийся частными и государственными учреждениями США для защиты информации. В то же время Агентство национальной безопасности, выступающее как эксперт по криптографическим алгоритмам, разрабатывает новые алгоритмы шифрования данных для массового использования. В 1987 году Национальное бюро стандартов после обсуждения подтвердило действие DES; его пересмотр намечалось провести не позднее января 1992 года, и на сегодняшний день действие DES ограничивается исключительно коммерческими системами.

 

4. ПОСТАНОВКА  И РЕШЕНИЕ ЗАДАЧИ

Разработать программу шифрующую  и дешифрующую введенный пользователем  текст. Обеспечить ввод и вывод информации с помощью файлов. Обеспечить достаточную криптоустойчивость шифра.

 

4.1. Краткая характеристика  среды Visual Studio 2010

Среда программирования Visual Studio 2010 позволяет реализовать поставленную задачу со всеми необходимыми требованиями. В среде используется язык C# является объектно-ориентированной средой.

4.2. Алгоритм  решения задачи

Программа представляет собой шифровщик и дешифровщик  одновре-менно. В ней используется метод симметрического кодирования, т.е. кодирование и декодирование осуществляется с помощью одного и того же ключа. Для обеспечения криптоустойчивости необходим длинный ключ. Пользователь вводит ключ, с помощью которого будет шифроваться текст, а затем и сам текст необходимый для шифровки. Далее он выбирает каким методом будет шифровать текст. Он может шифровать текст и двумя ключами сразу.

4.2.1. Модули  программы

Программа имеет несколько  стандартных основных модулей: вызов  справки, предлагаемый исходный текст и ключ.

Опишем лишь модули отвечающие непосредственно за шифрование.

4.2.2. Модуль шифровании/дешифрования


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

private void pictureBox1_Click(object sender, EventArgs e)

        {

           

            string str = textBox1.Text;

            char[] x = str.ToCharArray();

            progressBar1.Maximum = x.Length;

            progressBar1.Value = 0;

            for (int i = 0; i < x.Length; i++)

            {

                for (int j = 0; j < alf.Length; j++)

                {

                    if (x[i] == alf[j])

                    {

                        if (alf[j] == alf[alf.Length-1])

                        {

                            x[i] = alf[2];

                            break;

                        }

                        if(alf[j] == alf[alf.Length - 2])

                        {

                            x[i] = alf[1];

                            break;

                        }

                        if (alf[j] == alf[alf.Length - 3])

                        {

                            x[i] = alf[0];

                            break;

                        }

                        x[i] = alf[j+3];

                        break;

                    }

                }

               progressBar1.Value++;

            }

        str = new string(x);

        textBox2.Text = str;

        }

 

        private void pictureBox2_Click(object sender, EventArgs e)

        {

           

            string str = textBox2.Text;

            char[] x = str.ToCharArray();

            progressBar1.Maximum = x.Length;

            progressBar1.Value = 0;

            for (int i = 0; i < x.Length; i++)

            {

                for (int j = 0; j < alf.Length; j++)

                {

                    if (x[i] == alf[j])

                    {

                        if (alf[j] == alf[0])

                        {

                            x[i] = alf[alf.Length - 3];

                            break;

                        }

                        if (alf[j] == alf[1])

                        {

                            x[i] = alf[alf.Length - 2];

                            break;

                        }

                        if (alf[j] == alf[2])

                        {

                            x[i] = alf[alf.Length - 1];

                            break;

                        }

                        x[i] = alf[j - 3];

                        break;

                    }

                }

                progressBar1.Value++;

            }

            str = new string(x);

            textBox2.Text = str;

        }

 

private void pictureBox4_Click(object sender, EventArgs e)

        {

            string strk="";

            string str = textBox1.Text;

            string key = textBox3.Text;

            char[] x = str.ToCharArray();

            char[] y = key.ToCharArray();

            int r1=0, r2=0,j=0,prb=0;

            progressBar1.Maximum = x.Length;

            progressBar1.Value = 0;

            for (int i = 0; i < x.Length; i++)

            {

                if (prb == textBox3.TextLength)

                {

                    strk = strk + " ";

                    prb = 0;

                }

                prb++;

                if (j >= y.Length)

                    j = 0;

                    for (int u = 0; u < alf.Length; u++)

                    {

                        if (x[i] == alf[u])

                            r1 = u;

                        if (y[j] == alf[u])

                            r2 = u;

                    }

                    j++;

                    strk = strk + alf2[r1, r2];

 

                progressBar1.Value++;

            }

            textBox2.Text = strk;

        }

 

        private void pictureBox5_Click(object sender, EventArgs e)

        {

            string str = textBox2.Text;

            string key = textBox3.Text;

            char[] x = str.ToCharArray();

            char[] y = key.ToCharArray();

            int r1 = 0, j = 0,prb=0;

            progressBar1.Maximum = x.Length;

            progressBar1.Value = 0;

            for (int i = 0; i < x.Length; i++)

            {

                if (prb == textBox3.TextLength)

                {

                    prb = 0;

                    i++;

                    progressBar1.Value++;

                }

                prb++;

                r1 = 0;

                if (j >= y.Length)

                    j = 0;

                for (int u = 0; u < alf.Length; u++)

                {

                    for (int g = 0; g < alf.Length; g++)

                    {

Информация о работе Программная реализация методы шифрования Цезаря и Вижинера