Ім'я файлу: ТЗИ_ПЗ3_Ісаєва_Омельянчук.docx
Розширення: docx
Розмір: 61кб.
Дата: 23.12.2021
скачати


Міністерство освіти і науки України

Харківський національний університет радіоелектроніки
Кафедра ІУС

Дисципліна: «Технології захисту інформації»

ПРАКТИЧНА РОБОТА № 3


«ШИФРИ ПЕРЕСТАНОВКИ ТА ЗАМІНИ»


Виконали:

Бригада №8

групи КНТ-20-6

Омельянчук Анна
Ісаєва Марія


Приняла:

Кальницька Анжеліка Юріївна
З оцінкою «»

«» 2021 р.


Харків 2021

3 ШИФРИ ПЕРЕСТАНОВКИ ТА ЗАМІНИ


  1. Мета роботи

Ознайомитися з принципами роботи шифрів перестановки та заміни.


  1. Постановка задачі

Написати програму, яка шифрує дані за допомогою шифрів перестановки та заміни. Тип шифру обрати у таблиці відповідно до № бригади (у бригаді не більше 2-х осіб). Програма має шифрувати та розшифровувати текст двома будь-якими мовами. Під час розшифровування мають відновлюватися розділові знаки. Додаткові бали надаються за програму, яка підбирає паролі (у випадку, коли пароль невідомий) під час розшифровування.




  1. Хід роботи

  1. Шифр Атбаш

  1. Код першої програми


def atbash(s):

abc = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"

return s.translate(str.maketrans(

abc + abc.upper(), abc[::-1] + abc.upper[:: - 1]))
print(atbash("Привет, мир!"))



  1. Результат роботи першої програми:





  1. Код другої програми


def atbash(s):

abc = "abcdefghijklmnopqrstuvwxyz"

return s.translate(str.maketrans(

abc + abc.upper(), abc[::-1] + abc.upper[:: - 1]))
print(atbash("Hello, world!"))


  1. Результат другої роботи програми:




  1. Шифр «Поворотна решітка»

  1. Код першої програми


#!/usr/bin/env python3
def rotate(N, k):

return ((j, N-1-i) for i, j in k)
def round_key(N, k, r):

for _ in range(r):

k = rotate(N, k)

return sorted(k)
N = 10
data = [

"тСПвнперот",

"ьеосФдптор",

"оеевнйисст",

"оттаряяевл",

"лбюящ-оялд",

"еуитсоочюб",

"нионсызймх",

"шмеянситор",

"уфкртгтооо",

"кудррвуоа."

]
key = [(0,1), (0,6), (0,9), (1,0), (1,4),

(2,1), (2,5), (2,8), (3,2), (3,7),

(4,0), (4,3), (4,5), (4,6), (4,9), (5,2), (6,0), (6,1), (6,6),

(6,8), (7,2), (8,4), (8,8), (9,2), (9,7)]
for r in range(4):

print("".join(data[i][j] for i, j in round_key(N, key, r)))


  1. Результат роботи першої програми:




  1. Код другої програми


#!/usr/bin/env python3
def rotate(N, k):

return ((j, N-1-i) for i, j in k)
def round_key(N, k, r):

for _ in range(r):

k = rotate(N, k)

return sorted(k)
N = 10
data = [

"hdlvjfodnu",

"hfkdhemxSl",

"bvjdlsmjdH",

"ytkmncbfgj",

"pfnvkdgrad",

"xvndvcgdth",

"ikmbhfjcnh",

"yrhfncksbg",

"hfndjkhlll",

"jfnhhdkkxn."

]
key = [(0,1), (0,6), (0,9), (1,0), (1,4),

(2,1), (2,5), (2,8), (3,2), (3,7),

(4,0), (4,3), (4,5), (4,6), (4,9), (5,2), (6,0), (6,1), (6,6),

(6,8), (7,2), (8,4), (8,8), (9,2), (9,7)]
for r in range(4):

print("".join(data[i][j] for i, j in round_key(N, key, r)))


  1. Результат роботи другої програми:


Висновок: у ході виконання роботи ознайомилися з принципами роботи
шифрів перестановки та заміни.
скачати

© Усі права захищені
написати до нас