Шифр Цезаря.

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

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

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

Рік:
2005
Тип роботи:
Лабораторна робота
Предмет:
Захист інформації в комп’ютерних системах
Група:
КI

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 1 з курсу „ Захист інформації в комп’ютерних системах ” Тема: Шифр Цезаря. Виконав: ст. гр. КІ-4 Львів – 2005 Мета роботи: Ознайомитися із алгоритмом шифрування Цезаря та створити програму, що дозволяє шифрувати та дешифрувати текст за допомогою цього алгоритму. Теоретичні відомості: Насправді достовірно не відомо, коли з'явився тайнопис, але глиняна табличка, зроблена приблизно 1500 років до нашої ери, містить один з найперших її прикладів. Греки використовували коди принаймні з 475 року до нашої ери, а вищі кола в Римі використовували прості шифри в період царювання Юлія Цезаря. На початку нашої ери інтерес до криптографії (також, як і до інших інтелектуальних занять) впав; єдиними, хто іноді застосовував її, були ченці. З настанням епохи відродження мистецтво криптографії стало розцвітати. За часів Луї ХIV в Франції для урядових повідомлень використовувалося шифрування, засноване на 587 довільно набраних ключах. У ХIX столітті розвитку криптографії сприяв винахід телеграфу і азбуки Морзе. Азбука Морзе була першим двійковим представленням (крапка і тире) алфавіту, яке одержало широке розповсюдження. У першу світову війну у ряді країн були розроблені "шифрувальні машини", які дозволяють легко кодувати і декодувати текст, використовуючи складний шифр. З цієї миті історія криптографії стає історією дешифрації кодів. До того, як для кодування і декодування стали використовуватись механічні пристрої, складні шифри застосовувалися не часто, оскільки вимагали багато часу і сили для кодування і декодування. Тому більшість кодів можна було розшифрувати за відносно короткий проміжок часу. Проте, дешифрація стала набагато складнішою, коли стали застосовуватися шифрувальні машини. Хоча сучасні комп'ютери могли б розшифрувати ці коди відносно легко, але навіть комп'ютери не можуть наблизитися до видатного таланту Герберта Ядлея, який дотепер вважається найвидатнішим дешифрувальником всіх часів. В 1915 році у свій вільний час він розшифрував дипломатичний код США, а потім у 1922 році дипломатичний код Японії, хоча він навіть не знав японської мови. Під час другої світової війни головний метод дешифрації кодів ґрунтувався на крадіжці ворожої дешифрувальної машини, таким чином можна було уникнути втомливого процесу розшифрування кодів. Фактично володіння службою Аллеса німецькою шифрувальною машиною, що було не відоме Німеччині, сприяло в певній мірі результату війни. З приходом комп'ютерів, особливо розрахованих на багато користувачів, необхідність в засекреченні інформації і в стійких кодах стала ще гострішою. Необхідно не тільки захищати файли, але і управляти доступом власне до комп'ютера. Було розроблено багато методів шифрування файлів даних і алгоритм DES (Стандарт шифрування даних), прийнятий Національним бюро стандартів США, довший час вважалося, що його неможливо розшифрувати. Суть алгоритму Цезаря полягає у заміні кожної літери в повідомленні на іншу, зсунуту в алфавіті на певну кількість знаків (в оригіналі на 3). Дешифрація виконується у зворотньому порядку, тобто зсувом кожної літери зашифрованого повідомлення на 3 знаки назад. В комп’ютерній реалізації в якості алфавіту використовується таблиця символів ASCII, або ж бінарний код символу (байт). Текст програми: void encrypt() //функція шифрування файлу { char ch, ch_enc; puts("\n\t\tENCRYPTING STARTED"); ch=ch_enc=fgetc(in); while (!feof(in)) { printf("\n %c (%d)",ch_enc,ch_enc); if (isalpha(ch)) { // якщо літера, то "шифруємо", ch_enc=ch_enc+K; // якщо ні - залишаємо те, що було if ( ch>='A' && ch<='Z' && ch_enc>'Z' ) { ch_enc=ch_enc-26; }// A – Z if ( ch>='a' && ch<='z' && ch_enc>'z' ) { ch_enc=ch_enc-26; }// a - z printf(" => encrypted: %c (%d)",ch_enc,ch_enc); } fputc(ch_enc,out); ch=ch_enc=fgetc(in); } } void decrypt() //функція дешифрування файлу (відновлення оригінального тексту) { char ch, ch_dec; puts("\n\t\tDECRYPTING STARTED"); ch=ch_dec=fgetc(in); while (!feof(in)) { printf("\n %c (%d)",ch_dec,ch_dec); if (isalpha(ch)) { // якщо літера, то "дешифруємо", ch_dec=ch_dec-K; // якщо ні - залишаємо те, що було if ( ch>='A' && ch<='Z' && ch_dec<'A' ) { ch_dec=ch_dec+26; }// A - Z if ( ch>='a' && ch<='z' && ch_dec<'a' ) { ch_dec=ch_dec+26; }// a - z printf(" => decrypted: %c (%d)",ch_dec,ch_dec); } fputc(ch_dec,out); ch=ch_dec=fgetc(in); } } Результати роботи програми: Оригінальний текстовий файл: In programming, you are often faced with situations where you need to execute a particular action, but you don't know in advance which method, or even which object, you'll want to call upon to execute that action. For example, a button might know that it must notify some object when it is pushed, but it might not know which object or objects need to be notified. Rather than wiring the button to a particular object, you will connect the button to a delegate and then resolve that delegate to a particular method when the program executes. In the early, dark, and primitive days of computing, a program would begin execution and then proceed through its steps until it completed. If the user was involved, the interaction was strictly controlled and limited to filling in fields. Зашифрований файл: Lq surjudpplqj, brx duh riwhq idfhg zlwk vlwxdwlrqv zkhuh brx qhhg wr hahfxwh d sduwlfxodu dfwlrq, exw brx grq'w nqrz lq dgydqfh zklfk phwkrg, ru hyhq zklfk remhfw, brx'oo zdqw wr fdoo xsrq wr hahfxwh wkdw dfwlrq. Iru hadpsoh, d exwwrq pljkw nqrz wkdw lw pxvw qrwlib vrph remhfw zkhq lw lv sxvkhg, exw lw pljkw qrw nqrz zklfk remhfw ru remhfwv qhhg wr eh qrwlilhg. Udwkhu wkdq zlulqj wkh exwwrq wr d sduwlfxodu remhfw, brx zloo frqqhfw wkh exwwrq wr d ghohjdwh dqg wkhq uhvroyh wkdw ghohjdwh wr d sduwlfxodu phwkrg zkhq wkh surjudp hahfxwhv. Lq wkh hduob, gdun, dqg sulplwlyh gdbv ri frpsxwlqj, d surjudp zrxog ehjlq hahfxwlrq dqg wkhq surfhhg wkurxjk lwv vwhsv xqwlo lw frpsohwhg. Li wkh xvhu zdv lqyroyhg, wkh lqwhudfwlrq zdv vwulfwob frqwuroohg dqg olplwhg wr iloolqj lq ilhogv. Висновок: виконуючи цю лабораторну роботу, я вивчив алгоритм шифрування Цезаря та реалізував його програмно.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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