Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки, молоді та спорту України
ІФНТУНГ
Кафедра КСМ
Лабораторна робота №7
ДОСЛІДЖЕННЯ КРИПТОАЛГОРИТМУ ШИФРУВАННЯ RSA
2011 р.
Мета роботи: дослідження структури алгоритму і методики практичної реалізації криптосистеми шифрування RSA
ПОРЯДОК ВИКОНАННЯ РОБОТИ
1 Розробити алгоритм для кодування та написати програму кодування з ключем k[0]-k[3] (використання 4-х ключів обумовлено тим, що для кодування другої половини даних (Z) використовуються ключі k[2] та k[3] для підвищення стійкості криптоалгоритму кодування), для даних, що знаходяться в z, y.
Параметри:
Довжина ключа - 128 біт
Кількість ітерацій – 16 (кожна ітерація включає в себе 2 раунди).
2 На основі алгоритму кодування розробити алгоритм для декодування та написати програму декодування даних на будь-якій із мов програмування.
Порядок виконання роботи відповідає наведеній нижче криптосистемі шифрування даних за схемою RSA.
Код програми:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Numerics;
using System.Windows.Forms;
namespace WindowsFormsApplication45
{
public partial class Form1 : Form
{
private string kod;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Random rnd = new Random();
BigInteger p = new BigInteger(61); Console.WriteLine("p = " + p);
BigInteger q = new BigInteger(53); Console.WriteLine("q = " + q);
BigInteger n = p * q;
BigInteger fi = (p - 1) * (q - 1);
BigInteger e1 = new BigInteger(17); Console.WriteLine("e = " + e);
BigInteger d = e1.modInverse(fi); Console.WriteLine("d = " + d);
List<BigInteger> original = new List<BigInteger>();
List<BigInteger> encripted = new List<BigInteger>();
List<BigInteger> decripted = new List<BigInteger>();
foreach (char c in richTextBox1.Text)
original.Add(new BigInteger((int)c));
Console.WriteLine("Шифр:");
for (int ii = 0; ii < original.Count; ii++)
{
encripted.Add(original[ii].modPow(e1, n));
richTextBox2.AppendText(encripted[ii].ToString());
}
for (int ii = 0; ii < original.Count; ii++)
{
decripted.Add(encripted[ii].modPow(d, n));}
int ll;
StringBuilder decripted_text = new StringBuilder();
foreach (BigInteger x in decripted)
{
ll = Convert.ToInt32(x.ToString());
decripted_text.Append((char)ll);
}
richTextBox3.AppendText(decripted_text.ToString());
} }
private void button2_Click(object sender, EventArgs e)
{
richTextBox1.Text = Decrypt(kod, textBox1.Text);
}
}
}
Результат:
Висновок: На даній лабораторній роботі я дослідила дослідити роботу криптоалгоритму шифрування RSA.
.