Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра БІТ
З В І Т
до лабораторної роботи №4
з курсу: «КРИПТОГРАФІЧНІ СИСТЕМИ ТА ПРОТОКОЛИ»
на тему: «ВИВЧЕННЯ ТА ДОСЛІДЖЕННЯ АЛГОРИТМІВ ШИФРУВАННЯ РЮКЗАКА»
Мета роботи – навчитися практично використовувати алгоритми шифрування рюкзака і розробляти програмне забезпечення для реалізації цих алгоритмів.
Завдання
1) Ввести в комп'ютер програми згідно із завданням.
2) Відлагодити програми. При необхідності скоригувати блок-схеми алгоритмів та програми у відповідності з виявленими логічними та синтаксичними помилками.
3) Остаточні версії блок-схем, програм та отримані результати оформити у звіті з лабораторної роботи.
4) Здати звіт з лабораторної роботи.
Блок-схеми алгоритмів
class Program
void Main( )
class Knapsack ()
void Decipher ()
void Encipher ()
ні
так
Остаточна версія програми
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lab_4_Kre
{
class Program
{
static void Main(string[] args)
{
Knapsack K = new Knapsack();
K.Encipher();
Console.ReadLine();
K.Decipher();
Console.ReadLine();
}
}
class Knapsack
{
public int i, h = 0, sum = 0, c = 11, k;
public bool flag = true;
int n = 23, m = 49;
int n_inv = 2, bufr;
public void Encipher()
{
string ptext = " Embrace life, always wear your seat belt";
int[] Key = new int[] { 1, 3, 7, 10, 13, 16, 19, 21, 26, 30, 34, 38 };
Console.WriteLine("------------------------------Knapsack cipher----------------------------\nENCODE\nEnter your plaintext : " + ptext);
ptext.ToArray();
Console.Write("\nEnter your public key : ");
for (int i = 0; i < Key.Length; i++)
{
Console.Write(Key[i] + " ");
}
for (int i = 0; i < Key.Length; i++)
{
Key[i] *= n;
while (Key[i] - m > 0)
{
Key[i] -= m;
}
}
Console.ReadLine();
Console.Write("\n\nYour private key : ");
for (int i = 0; i < Key.Length; i++)
{
Console.Write(Key[i] + " ");
}
string[] Bin = new string[ptext.Length];
int[] Cipher = new int[ptext.Length];
for (i = 0; i < Bin.Length; i++)
{
Bin[i] = Convert.ToString(Convert.ToChar(ptext[i]) - 97, 2);
}
while (h < Bin.Length)
{
c = 11;
for (int i = Bin[h].ToArray().Length - 1; i > -1; i--)
{
Cipher[h] += Convert.ToInt32(Convert.ToString(Bin[h].ToArray()[i])) * Key[c];
if (c > 1) { c--; };
}
h++;
}
Console.ReadLine();
Console.Write("\nYour ciphertext : ");
for (int y = 0; y < Cipher.Length; y++)
{
Console.Write(Cipher[y] + " ");
}
}
public void Decipher()
{
while (n_inv != 1)
{
n_inv = n * n_inv;
while (bufr - m > 0)
{
bufr -= m;
}
n_inv++;
}
Console.WriteLine("\n" + n_inv);
}
}
}
Результат роботи програми