DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

АФІННІ шифри

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2015
Тип роботи:
Звіт
Предмет:
Методи та засоби криптологічних перетворень
Група:
ІБ – 44

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет “Львівська політехніка”  Звіт до лабораторної роботи №2 З курсу: “Методи і засоби криптологічних перетворень” На тему: „АФІННІ шифри” Львів – 2008 Мета: дослідити афінні шифри першого та вищих порядків.. Теоретичні відомості 1. Шифри простої заміни. n-символьний алфавіт утотожнюємо з кільцем Zn. А саме, кожна буква замінюється своїм номером у алфавіті, прийому нумерація починається з нуля. Наприклад, латинська абетка утотожнюється із Z26, а українська із Z33. Літера а української абетки трактується як 0, літера б як 1, в як 2 і т.д. Тепер до букв відкритого тексту ми можемо вільно застосовувати операції додавання та множення за відповідним модулем. Шифр зсуву. Ключ: s таке, що 0 < s < п. Шифрування. У повідомленні кожна буква х заміщується буквою Е(х) = (х + s) mod n. Дешифрування. У криптотексті кожна буква х' заміщується буквою D(x') = (х' + s') mod п, де s' = п - s. Величину зворотнього зсуву s' будемо називати дешифруючим ключем. Лінійний шифр. Ключ: а таке, що 0 < а < п і НСД (а, п) = 1. Шифрування. У повідомленні кожна буква х заміщується буквою Е{х) = (ах) mod n. Дешифрування. У криптотексті кожна буква х' заміщується буквою D(x') = (a'x') mod п, де а' — a-1 mod n — дешифруючий ключ. Узагальненням і шифру зсуву, і лінійного шифру є Афінний шифр. Ключ: a, s такі, що 0 < s < п, 0 < а <п і НСД (а, п) = 1. Шифрування. У повідомленні кожна буква х заміщується буквою Е(х) = (ах + s) mod n. Дешифрування. У криптотексті кожна буква х' заміщується буквою D(x') = (a'x'+ s’) mod n, де пара а’ – a-1 mod n, s’= (—a’s) mod n є дешифруючим ключем. Як і кожен шифр простої заміни, афінний шифр піддається частотному аналізові. 2. Афінні шифри вищих порядків. Подумаємо, як можна розширити монограмні шифри попереднього пункту так, щоб вони оперували з k-грамами для довільного k > 1. Спочатку введемо операцію додавання в Znk. Сумою векторів X=(x1,. . .,хk) і s=(s1,… ,sk) з Znk є вектор X + S = ((x1 + s1) mod n,…, (хk + sk) mod n). Zkn з операцією додавання є групою. Вектор —S = (n — s1,…, n — sk) є оберненим до вектора S — (s1,…,sk). Шифр зсуву k-го порядку. Ключ: S є Zkn. Шифрування. Повідомлення розбивається на k-грами. Кожна k-грама X заміщується k-грамою Е(Х) = X + S. Дешифрування. Кожна k-грама X' криптотексту заміщується k-грамою D(X') = X' + 5’, де S' = —S є дешифруючим ключем. Лінійний шифр k-го порядку. Ключ: А Є GLk(Zn). Шифрування. Повідомлення розбивається на k-грами. Кожна k-грама X заміщується k-грамою Е(Х)= АХ. Дешифрування. Кожна k-грама Х’ криптотексту заміщується к-грамою D(X') = A'X', де А’ = А-1 — дешифруючий ключ. Афінний шифр k-го порядку. Ключ: А Є GLk{Zn} і S Є Znk. Шифрування. Повідомлення розбивається на k-грами. Кожна k-грама X заміщується k-грамою Е(Х) = АХ + S. Дешифрування. Кожна k-грама X' криптотексту заміщується k-грамою D{X’} = А’X’ + S’, де А’ = А-1 і S’ = -A’S — дешифруючий ключ. Шифр зсуву з s=54 Ключ: s=54 mod 26=2. Шифрування. У повідомленні кожна буква х заміщується буквою Е(х)= (х + s) mod n. Дешифрування. У криптотексті кожна буква х' заміщується буквою D(x') = (х' + s') mod п, де s' = п – s=26-2=24. Відкритий текст Iwanttogotoschool  Зашифровани текст Kycpvvqiqvquejqqn  Розшифровани текст Iwanttogotoschool   Блок схема алгоритму   Программа реалізації шифру зсуву #include<stdio.h> int main() { char c,c2[255]; int i,s=76,s1,k=0; printf("Enter text: "); s1=26-s; while (s1>26) s1-=26; while (s1<0) s1+=26; while (c!='\n') { scanf("%c",&c); i=c; if ((i>=65) && (i<=90)){ i+=s; while (i>90) i-=26; } if ((i>=97) && (i<=122)){ i+=s; while (i>122) i-=26; } c2[k]=i; k++; } printf("S=%d S'=%d\nZawufrovanuj text: ",s,s1); k=0; while(c2[k]!='\n') { printf("%c",c2[k]); i=c2[k]; if ((i>=65) && (i<=90)){ i+=s1; while (i>90) i-=26; } if ((i>=97) && (i<=122)){ i+=s1; while (i>122) i-=26; } c2[k]=i; k++; } printf("\nRozwufrovanuj text: "); k=0; while(c2[k]!='\n') { printf("%c",c2[k]); k++; } getchar(); return 0; } Результат виконання шифрування Відкритий текст Iwanttogotoschool  Зашифровани текст Kycpvvqiqvquejqqn  Розшифровани текст Iwanttogotoschool   Висновок: під час виконання даної лабораторної роботи ми ознайомилися з алгоритмом афінних шифрів та за допомогою програмної реалізації коду афінного шифру зсуву зашифрували повідомлення “I want to go to school” за допомогою ключа 76 та отримали як результат зашифрований текст Lzdqwwjrwrvfkrro.
Антиботан аватар за замовчуванням

2015

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!