Применение алгоритма RSA при шифровании потоков данных
Проблемы теоретико-числовых алгоритмов. Алгоритм нахождения делителей многочлена в кольце. Алгоритм, доказывающий непростоту числа. Проверка большого числа на простоту. Практическая реализация алгоритма. Форма нахождения простых чисел и генерации ключей.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 26.02.2020 |
Размер файла | 185,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
4.2 Анализ результатов
Результатом работы созданной программы являются зашифрованные и расшифрованные сообщения.
Для тестирования программы использовался пример приведенный в [11] , , и . Также и .
5. Выводы
Перейдем к обсуждению выводов после детального просмотра специфики метода, реализованного программного продукта на основе построенного алгоритма, а также представленного анализа результатов по обработанному материалу.
5.1 Алгоритм
Использованный алгоритм RSA имеет ряд преимуществ:
1) алгоритм RSA является ассиметричным, т.е. он основывается на распространении открытых ключей в сети. Это позволяет нескольким пользователям обмениваться информацией, посылаемой по незащищенным каналам связи;
2) пользователь сам может менять как числа , , так и открытый и закрытый ключ по своему усмотрению, только потом он должен распространить открытый ключ в сети. Это позволяет добиваться пользователю нужной ему криптостойкости.
При всех этих преимуществах данный алгоритм имеет существенный недостаток - невысокая скорость работы. Алгоритм RSA работает более чем в тысячу раз медленнее симметричного алгоритма DES.
Из всего вышесказанного можно заключить, что данный алгоритм шифрования, хотя довольно медленный, но он ассиметричный и позволяет добиваться нужной криптостойкости, что делает его незаменимым при работе в незащищенных каналах связи.
5.2 Алгоритм и программа
Исходя из проработанных данных, по построенному алгоритму и созданному программному продукту сделаны следующие выводы:
1) построенный алгоритм, а соответственно и созданный на его базе программный продукт, полностью реализует базовые механизмы схемы RSA и, таким образом удовлетворяют основным поставленным задачам;
2) данный программный продукт построен по технологии клиент/сервер и предназначен сохранять конфиденциальность передачи информации в сети.
Таким образом, по выводам о построенном алгоритме и созданном программном продукте можно заключить, что он подходит для решения проблем шифрования информации, связанных с передачей данных по сети.
Заключение
В рамках данного дипломного проектирования перед студентом Малышевым А.А. была поставлена задача: на основе алгоритма RSA для шифрования блоков данных, построить алгоритм и реализовать программный продукт для шифрования потоков данных.
В результате выполнения дипломного проектирования был составлен принципиальный алгоритм для решения поставленной задачи. Далее он был детализован и реализован на ЭВМ. В конце, был проведён анализ полученных результатов, и сделаны необходимые выводы.
За основу построения алгоритма был принят алгоритм RSA для шифрования блоков данных, изучена соответствующая литература по алгоритму, и был построен алгоритм и реализован программный продукт в среде визуального программирования Delphi 5 под ОС типа Windows для IBM PC-совместимых компьютеров.
Созданный программный продукт позволяет решить поставленную задачу и, дополнительно, содержит в себе небольшую базу данных абонентов. Т.е. в результате выполнения программы исходное сообщение шифруется и передается по сети, где оно расшифровывается. Также можно указать о том, что программа имеет интуитивно понятный интерфейс, что дополнительно помогает пользователю с наибольшей результативностью использовать всю ресурсную базу.
В заключении, после анализа полученных результатов были сделаны выводы, согласно которым алгоритм работает и применим для поставленной задачи.
Список использованных источников
1. Ященко В. В. Основные понятия криптографии // Математическое просвещение. Сер. 3. №2. 1998. С. 53-70.
2. Виноградов И. М. Основы теории чисел. М.: Наука. 1972.
3. Карацуба А. А. Основы аналитической теории чисел. М.: Наука. 1983 г.
4. Кнут Д. Искусство программирования на ЭВМ. Т.2: Получисленные алгоритмы. М.: Мир. 1977.
5. Ахо А.. Хопкрофт Дж.. Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир. 1979.
6. Варновский Н. П. Криптография и теория сложности // Математическое просвещение. Сер. 3. №2. 1998. С. 71-86.
7. Василенко О. Н. Современные способы проверки простоты чисел // Кибернетический сборник, вып. 25. 1988. С. 162-188.
8. Прахар К. Распределение простых чисел. М.: Мир. 1967.
9.Боревич З.И. Шафаревич И.Р. Теория чисел. М.: Наука. 1964.
10. Кострикин А.И. Введение в алгебру. М.: Наука. 1977.
11. Брассар Дж. Современная криптология. Мир ПК. №3. 1997.
Приложение 1
Листинг программы
Модуль Key.pas
Function Prost(n:integer):Boolean;
var k:Boolean;
i:integer;
begin
k:=true;
if n<>2 then
for i:=2 to trunc(sqrt(n))+1 do
if (n/i)=trunc(n/i) then
begin
k:=False;
Break;
end;
Prost:=k;
end;
{________________________________________________________}
Function Evklid(Num1,Num2:integer):integer;
var r,q1,p1:array of integer;
i,n,k:integer;
begin
if Num1>=Num2 then
begin
SetLength(r,10);
r[0]:=Num1;
r[1]:=Num2;
end
else
begin
SetLength(r,10);
r[0]:=Num2;
r[1]:=Num1;
end;
i:=1;
while r[i]<>0 do
begin
inc(i);
r[i]:=r[i-2] mod r[i-1];
end;
n:=i-2;
SetLength(q1,n+1);
for i:=0 to n do
q1[i]:=r[i] div r[i+1];
SetLength(p1,n+2);
p1[0]:=1;
p1[1]:=q1[0];
k:=length(q1);
if k>1 then
for i:=2 to k do
p1[i]:=q1[i-1]*p1[i-1]+p1[i-2];
Result:=trunc(power(-1,k-1))*p1[k-1] mod Num2;
end;
{________________________________________________________}
Function HOD(Num1,Num2:integer):integer;
var r:array of integer;
i:integer;
begin
if Num1>=Num2 then
begin
SetLength(r,Num2);
r[0]:=Num1;
r[1]:=Num2;
end
else
begin
SetLength(r,Num1);
r[0]:=Num2;
r[1]:=Num1;
end;
i:=1;
While r[i]<>0 do
begin
inc(i);
r[i]:=r[i-2] mod r[i-1];
end;
Result:=r[i-1];
end;
{________________________________________________________}
Function ModDegree(Num,Degree,n:integer):integer;
var x:array of integer;
i:integer;
begin
SetLength(x,n);
x[1]:=Num mod n;
for i:=2 to Degree do
x[i]:=x[i-1]*Num mod n;
Result:=x[Degree];
end;
Приложение 2
Главная форма программы
Приложение 3
Форма базы данных абонентов
Приложение 4
Форма нахождения простых чисел и генерации ключей
Размещено на Allbest.ru
...Подобные документы
Составление структурных программ для решения практических задач по теме "Целочисленная арифметика". Алгоритм нахождения делителей натурального числа, алгоритм проверки простое ли число, алгоритм Решета Эратосфена. Система программирования Free Pascal.
разработка урока [27,1 K], добавлен 03.09.2014Характеристика методов представления заданных чисел в двоичной, шестнадцатеричной, восьмеричной системе счисления. Представление указанного числа в четырехбайтовом IEEE формате. Разработка алгоритма обработки одномерных и двумерных числовых массивов.
контрольная работа [138,9 K], добавлен 05.06.2010Актуальность и предыстория проблемы построения систем связи с открытым ключом. Алгоритм кодирования, перевода из десятичного числа в двоичное, быстрого возведения числа в степень, поиска взаимно простых чисел. Дешифрование сообщения по криптоалгоритму.
курсовая работа [140,3 K], добавлен 20.06.2017Разложение функций по переменным. Совершенная дизъюнктивная нормальная форма. Разрешимoсть задач в классической теории алгоритмов и их трудоемкость. Память и время как количественная характеристика алгоритма (применительно к машине Тьюринга и ЭВМ).
дипломная работа [59,9 K], добавлен 17.04.2009Модификация алгоритма RPC таким образом, чтобы он не требовал входного параметра, но сохранил свою гибкость при решении задачи нахождения максимальной клики для разных графов. Метод ветвей и границ. Построение функции-классификатора. Листинг алгоритма.
курсовая работа [197,8 K], добавлен 06.10.2016Задачи, решаемые методом динамического программирования. Основные этапы нахождения деревянного алгоритма решения задачи. Выполнение алгоритма Прима. Построение Эйлерового цикла. Решение задач средствами Excel. Алгоритм основной программы - Derevo.
курсовая работа [586,3 K], добавлен 04.04.2015Создание алгоритма для построения синтаксического анализатора полиномов и его реализация в среде Visual Studio 2005 на языке программирования C#. Программное решение задачи поиска максимального числа единиц в бинарном представлении простых чисел.
курсовая работа [723,5 K], добавлен 04.10.2010Операторы генетического алгоритма. Пример простейшей программы. Процесс генерации и накопления информации о выживании и продолжении рода в ряде поколений популяции. Программа, реализующая простой генетический алгоритм для нахождения минимума функции.
курсовая работа [39,3 K], добавлен 29.10.2012Принцип работы алгоритма бинарного поиска в массиве. Способы исследования алгоритма "прямое включение". Формулы зависимости числа сравнений от элементов в массиве. Графики среднего числа сравнений и перемещений практических и теоретических измерений.
курсовая работа [646,1 K], добавлен 07.01.2014Анализ алгоритмов нахождения кратчайших маршрутов в графе без отрицательных циклов: Дейкстры, Беллмана-Форда и Флойда-Уоршалла. Разработка интерфейса программы на языке C++. Доказательство "правильности" работы алгоритма с помощью математической индукции.
курсовая работа [1,5 M], добавлен 26.07.2013Факторизация натурального числа. Метод квадратичного решета. Факторизация с помощью эллиптических кривых. Реализация алгоритмов натуральных чисел и оценка их эффективности. Применение алгоритмов факторизации натуральных чисел в программной среде Maple.
курсовая работа [851,6 K], добавлен 25.06.2013Описание и особенности некоторых алгоритмов архивации. Построение кода Хаффмана. Динамический алгоритм построения кода Хаффмана. Обратное восстановление текста. Способы двухступенчатого кодирования информации. Практическая реализация алгоритма LZ77.
курсовая работа [51,7 K], добавлен 24.12.2012Применения языка логического программирования Пролог и языка программирования Haskell для реализации алгоритма поиска оптимального каркаса графа. Алгоритм Прима, преимущество перед другими алгоритмами нахождения оптимального каркаса, близких к полным.
курсовая работа [230,2 K], добавлен 13.06.2012Этапы нахождения хроматического числа произвольного графа. Анализ примеров раскраски графа. Характеристика трудоемкости алгоритма раскраски вершин графа Мейниеля. Особенности графов, удовлетворяющих структуру графов Мейниеля, основные классы графов.
курсовая работа [1,1 M], добавлен 26.06.2012Свойства и виды алгоритмов. Составление программы, которая бы определила предыдущий и последующий символ для символа 'F' по таблице кодировки. Алгоритм нахождения максимального из двух значений. Программа замены местами в матрице элементов строк.
курсовая работа [133,4 K], добавлен 16.05.2015Обзор существующих подходов в генерации музыкальных произведений. Особенности создания стилизованных аудио произведений на основе современных нейросетевых алгоритмов. Выбор средств и библиотек разработки. Практические результаты работы алгоритма.
дипломная работа [4,0 M], добавлен 13.10.2017Методы доступа к сети. Алгоритм ALOHA, используемый для доступа к радиоканалу большого числа независимых узлов. Эффективность алгоритма CSMA/CD. Метод маркерного доступа. Ethernet – самый распространенный в настоящий момент стандарт локальных сетей.
лекция [112,9 K], добавлен 25.10.2013Изучение, освоение на примере симметричных шифров элементы практической криптографии. Использование расширенного алгоритма Евклида для нахождения обратного по модулю числа. Ознакомление с демо-версией программы симметричного шифрования с секретным ключом.
лабораторная работа [97,5 K], добавлен 18.04.2015Методы вычисления точных вероятностей в покере. Проектирование алгоритма нахождения вероятности выигрыша для нескольких игроков. Теоретический расчет вероятности выигрыша в игре. Программная оптимизация и упрощение алгоритмов вычисления вероятностей.
курсовая работа [96,1 K], добавлен 17.06.2013Определение понятия, видов и задач сортировки. Рассмотрение основ построения простых и улучшенных алгоритмов сортировки, анализ числа операций. Линейная и пирамидальная организация данных. Основные правила нижней оценки числа операций в алгоритмах.
презентация [274,5 K], добавлен 19.10.2014