Частина тексту файла (без зображень, графіків і формул):
Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра цифрових технологій в енергетиці
ЛАБОРАТОРНА РОБОТА №2
з дисципліни «Безпека інформаційних систем»
на тему: “Шифрування методом гамування”
Варіант № 13
Мета лабораторної роботи – ознайомлення та набуття навичок пов’язаних з захистом інформації та навчити працювати з методами криптографії.
Теоретичні відомості
Для зашифровування вхідної послідовності за цим методом відправник виконує побітове додавання по модулю 2 ключа k (відомий й одержувачу й відправнику) і m- розрядної двійкової послідовності, що відповідає повідомленню, яке пересилається:
ci=mi+ki, i=1,m
де mi, ki, ci – черговий i-й біт відповідно вихідного повідомлення m, ключа k і зашифрованого повідомлення с.
Процес розшифровування зводиться до повторної генерації ключової послідовності й накладенню її на зашифровані дані. Рівняння розшифрування має вигляд:
mi=ci–ki, i=1,m
Розрізняють гамування з кінцевою й нескінченною гамами. У якості кінцевої гами може використовуватися фраза, в якості нескінченної – послідовність, яка генерується генератором псевдовипадкових чисел.
У тому випадку, коли безліччю використовуваних для шифрування знаків повідомлення є текст, відмінний від двійкового коду, то його символи й символи гами замінюються цифровими еквівалентами, які потім підсумовуються по модулю N. Процес зашифровування в цьому випадку визначається співвідношенням
ci=(mi+ri) mod N, i=1, m
де mi, ri, ci – черговий i-й знак вихідного повідомлення, гами й шифротексту відповідно; N – кількість символів в алфавіті повідомлення; m – кількість знаків відкритого тексту.
Завдання для лаболаторної роботи:
Завдання виконується індивідуально кожним студентом. Усі необхідні обчислення зі скріншотами описуються у звіті.
Створити програму на будь-якій мові програмування для шифрування повідомлення із лабораторної роботи 1 із використанням шифру гамування.
/
Додати скріншот зашифровування до звіту. Порівняти час на шифрування методом заміни (Цезаря) та методом гамування, якщо час не сильно відрязняється додайте де-кілька речень за власним бажанням (або обрати свій текст).
Хід роботи
Так як перша лабораторна робота виконана для шифрування використовуючи англійський алфавіт, перекладемо текст на англійський і будемо використовувати його. Отримаємо ось такий текст:
/
Виконаємо шифрування методом гамування:
/
Тепер виконаємо шифрування цього ж тексту методом Цезаря:
/
Метод шифрування гамуванням виявився набагато швидшим за метод шифрування Цезаря.
Висновок: Під час виконання даної лабораторної роботи було набуто навичок пов’язаних з захистом інформації, а саме написано програмний код для шифрування методом гамування і порівняно його швидкість з шифром Цезаря.
Код програми:
https://replit.com/join/jkyarekold-tr-15fundamient
import java.util.Scanner;
class Main {
private static final int KEY = 7;
public static String encrypt(String text) {
char[] chars = text.toCharArray();
for (int i = 0; i < chars.length; i++) {
chars[i] ^= KEY;
}
return new String(chars);
}
public static String decrypt(String text) {
return encrypt(text);
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Input text: ");
String text = scan.nextLine();
System.out.println();
long startTime = System.nanoTime();
String encryptedText = encrypt(text);
String decryptedText = decrypt(encryptedText);
long endTime = System.nanoTime();
long executionTime = endTime - startTime;
System.out.println("Encrypted text: " + encryptedText);
System.out.println();
System.out.println("Decrypted text: " + decryptedText);
System.out.println();
System.out.println("Execution time: " + executionTime + " ns");
}
}