Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки
Національний університет «Львівська політехніка»
Кафедра ЕОМ
Звіт
до лабораторної роботи № 2
з дисципліни: “ Захист інформації в комп’ютерних системах ”
на тему: Перестановочний алгоритм
ПЕРЕСТАНОВОЧНИЙ АЛГОРИТМ
Мета: ознайомитись з основами класичної техніки шифрування – перестановочними шифрами.
ТЕОРИТИЧНІ ВІДОМОСТІ:
Алгоритм перестановки ґрунтувався на заміщенні символів відкритого тексту різними символами шифрованого тексту. Принципово інший клас перетворень будується на використанні перестановок букв відкритого тексту. Шифри, створені за допомогою перестановок, називають перестановочними шифрами.
Більш складна схема припускає запис тексту повідомлення в горизонтальні рядки однакової довжини та наступне зчитування тексту стовпець за стовпцем, але не один за одним, а відповідно до деякої перестановки стовпців. Порядок зчитування стовпців при цьому стає ключем алгоритму.
Простий перестановочний шрифт дуже легко розпізнати, тому що букви в ньому зустрічаються з тією же частотою, що й у відкритому тексті. Наприклад, для тільки що розглянутого способу шифрування з перестановкою стовпців аналіз шифру виконати досить просто - необхідно записати шифрований текст у вигляді матриці й перебрати можливі варіанти перестановок для стовпців. Можна використати також таблиці значень частоти біграм та триграм.
Перестановочний шифр можна зробити більше захищеним, виконавши шифрування з використанням перестановок кілька разів. Виявляється, що в цьому випадку застосовану для шифрування перестановку відтворити вже не так просто.
ЗАВДАННЯ
Створити програму, що реалізує довільний перестановочний шифр.
Початковий текст: Глова Юрій Іванович
2431 - ключ
Закодований текст: ПгщАн Сфхг Пйнсогмс
КОД ВИКОНАВЧОЇ ПРОГРАМИ:
Файл(CesarCrypt.cs)
namespace lab2
{
class PermutationCrypt
{
string result = "";
// algorithm for encrypt
public string Encrypt(string data, string key)
{
int lenght = key.Length;
int height = data.Length / lenght;
if (data.Length % lenght != 0)
height++;
char[,] mas = new char[lenght, height];
int pos = 0;
// створення матриці
for (int h = 0; h < height; h++)
{
for (int l = 0; l < lenght; l++)
{
if (data.Length > pos)
mas[l, h] = data[pos++];
else
mas[l, h] = ' ';
}
}
// виконання перестановок
for (int l = 0; l < lenght; l++)
{
for (int h = 0; h < height; h++)
{
result += mas[(key[l] - 0x0031), h];
}
}
return result;
}
// algorithm for decrypt
public string Decrypt(string data, string key)
{
int lenght = key.Length;
int height = data.Length / lenght;
char[] result = new char[lenght * height];
// дешифрування
for (int l = 0; l < lenght; l++)
{
for (int h = 0; h < height; h++)
{
result[(lenght * h) + (key[l] - 0x0031)] = data[height * l + h];
}
}
return new string(result);
}
}
}
ВИСНОВОК:
На даній лабораторній роботі я оволодів навиками створення алгоритму шифрування – алгоритму перестановки. Даний алгоритм створено на мові C#.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!