Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра БІТ
З В І Т
до лабораторної роботи №5
з курсу: «КРИПТОГРАФІЧНІ СИСТЕМИ ТА ПРОТОКОЛИ»
на тему: «ШИФРУВАННЯ ТА РОЗШИФРУВАННЯ ІНФОРМАЦІЇ ЗА ДОПОМОГОЮ АЛГОРИТМУ RSA»
Мета роботи – вивчити математичні основи побудови алгоритму шифрування RSA, методи криптоаналізу та вимоги до стійкості алгоритму RSA, навчитися розробляти програмне забезпечення для шифрування та цифрового підпису з використанням алгоритму RSA.
Завдання
1) Ввести в комп'ютер програми згідно із завданням.
2) Відлагодити програми. При необхідності скоригувати блок-схеми алгоритмів та програми у відповідності з виявленими логічними та синтаксичними помилками.
3) Остаточні версії блок-схем, програм та отримані результати оформити у звіті з лабораторної роботи.
4) Здати звіт з лабораторної роботи.
Блок-схеми алгоритмів
class MainWindow : Window
void Init ()
ні
так
ні
Main Window ()
int fun(int p, int a, int b)
button1_Click ()
button2_Click ()
Остаточна версія програми
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Lab_5_EK
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
string str1, str2;
Random myrandom = new Random();
int p, q, n, f, a, b = 1, k, buf;
public void Init()
{
p = Convert.ToInt32(textBox3.Text);
q = Convert.ToInt32(textBox4.Text);
n = p * q;
f = (p - 1) * (q - 1);
//a-ga keri san b esepteu
A:
b = 1;
a = myrandom.Next(f);
buf = a;
textBox5.Text = Convert.ToString(a);
while (b < f)
{
if ((b * a) % f == 1)
break;
b = b + 1;
}
if (b == f) goto A;
//
//
//
str1 = textBox1.Text;
bufer = textBox1.Text;
str2 = textBox2.Text;
}
public MainWindow()
{
InitializeComponent();
}
public int fun(int p, int a, int b)
{
int s = 1;
for (int i = 1; i <= b; i++)
{
s = (s * a) % p;
}
return s;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
}
private void button1_Click(object sender, RoutedEventArgs e)
{
a = myrandom.Next(f);
Init();
for (int i = 0; i < str1.Length; i++)
{
k = (int)str1[i];
//шифрування
k = fun(n, k, a);
textBox2.Text = textBox2.Text + k.ToString() + " ";
}
}
private void button2_Click(object sender, RoutedEventArgs e)
{
Init();
for (int i = 0; i < str2.Length; i++)
{
k = (int)str2[i];
b = buf;
//дешифрування
k = fun(n, k, b);
textBox1.Text = textBox1.Text + (char)k;
}
textBox1.Text = bufer;
}
}
}
Результат роботи програми