ДОСЛІДЖЕННЯ АФІННИХ ШИФРІВ

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»  Звіт до лабораторної роботи №2 з курсу «Методи та засоби криптологічних перетворень» ДОСЛІДЖЕННЯ АФІННИХ ШИФРІВ Виконав: студент групи ІБ-44 Перевірив: Львів – 2010 Мета роботи - вивчити алгоритм закодування відкритого тексту афінним шифром та навчитися розробляти програмне забезпечення для реалізації цього алгоритму на комп'ютері. Теоретичні відомості 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 — дешифруючий ключ. Приклад: Зашифрувати лінійним шифром другого порядку біг раму Остаточна версія програми зашифрування #include<stdio.h> #define n 3 char A_asciicode[26] = {'a','b','c','d','e','f','g','h','i','j','k','l', 'm','n','o','p','q','r','s','t','u','v','w','x','y','z' }; int matrix[n][n] = { 9, 1, 3, 11,1,4, 14,5,1 } ; int main() { FILE *IN, *OUT; int jik; int text[n][n],nnn[n][n]; int i,j,z,s,ch,k,q; IN=fopen("C:\\str\\d2.txt","r"); OUT=fopen("C:\\str\\vd.txt","w+"); i=0; j=0; while(1) { ch=fgetc(IN); if(feof(IN)) break; k=0; //system("pause"); while(ch!=A_asciicode[k]) { k++; printf("k=%i",k) ; } printf("%i\n",i) ; if(i>2) { j++; i=0; } text[i++][j]=k; } for(z=0;z<n;z++) for(i=0;i<n;i++) { s=0; for(j=0;j<n;j++) { q=matrix[i][j]*text[j][z]; s+=q; } nnn[i][z]=s; } for(i=0;i<n;i++) for(j=0;j<n;j++) fprintf(OUT, "%c", A_asciicode[nnn[j][i]%26]); return 0; } Остаточна версія програми зашифрування #include<stdio.h> #define n 3 char A_asciicode[26] = {'a','b','c','d','e','f','g','h','i','j','k','l', 'm','n','o','p','q','r','s','t','u','v','w','x','y','z' }; int matrix[n][n] = { 1,2,15,25,25,7,17,3,22} ; int main() { FILE *IN, *OUT; int ch,k; int text[n][n],nnn[n][n]; int i=0,j=0,q,s,z; for(i=0;i<n;i++) { for(j=0;j<n;j++) text[i][j]=-1; } IN=fopen("C:\\str\\vd.txt","r"); OUT=fopen("C:\\str\\droz.txt","w+"); i=0; j=0; while(1) { ch=fgetc(IN); if(feof(IN)) break; k=0; while(ch!=A_asciicode[k]) k++; if(i>2) { j++; i=0; } text[i++][j]=k; } for(z=0;z<n;z++) for(i=0;i<n;i++) { s=0; for(j=0;j<n;j++) { q=matrix[i][j]*text[j][z]; s+=q; } nnn[i][z]=s; } for(i=0;i<n;i++) for(j=0;j<n;j++) fprintf(OUT, "%c", A_asciicode[nnn[j][i]%26]); return 0; } Результати виконання програми  Висновок: ми дослідили шифр простої заміни-лінійний шифр зсуву і реалізувала його програмно. Я побачила, що цей шифр є вразливим до атаки з відомим відкритим текстом. Якщо суперник знає, що шифруючи відображення E(X)=AX
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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