МЕТОДИ ШИФРУВАННЯ ТА ДЕШИФРУВАННЯ

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

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

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

Рік:
2024
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Методи i засоби комп'ютерних інформаційних технологій

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра САПР ЗВІТ до лабораторної роботи №6 “МЕТОДИ ШИФРУВАННЯ ТА ДЕШИФРУВАННЯ” з курсу: “Методи та засоби комп’ютерних інформаційних технологій” МЕТА РОБОТИ Мета роботи - вивчення простих методів шифрування та дешифрування інформації та їх особливостей. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ 2.1. Криптографічні системи. Перетворення секретної інформації – це кодування даних, яке використовується для маскування інформації. Ці перетворення змінюють дані, представлені в явній формі, так, що вони стають нерозпізнаваними (з певною мірою надійності) неавторизованими людьми. Шифрування, тобто перетворення секретної інформації, є особливо ефективним засобом проти несанкціонованого доступу до повідомлень, які передаються по лініях зв'язку і неавторизованих доступів до даних, що зберігаються у віддалених файлах. Навіть просте перетворення секретної інформації є ефективним засобом, що дає можливість приховати її значення від більшості користувачів. Коди і шифри використовувалися протягом багатьох віків. Спартанці в V ст. до н. е. і правляча верхівка в Венеції (Рада десяти) в XVI в, користувалися методами шифрування задовго до епохи ЕОМ. Якщо інші методи управління доступом не зможуть запобігти попаданню даних в руки неавторизованих людей, то ці дані все одно будуть для них незрозумілі, якщо вони були зашифровані. Крім того, вартість простих, але досить ефективних перетворень секретної інформації, может бути дуже невеликою. У загальній формі в криптографічній системі початкове повідомлення М і ключ К є входами в деякий перетворюючий пристрій (який може бути реалізоване або апаратно, або програмно). Якщо до лінії зв'язку підключиться зловмисник, він зможе викрасти зашифроване повідомлення (або шифровку) Е. Процес відновлення повідомлення при невідомому ключі називаеться дещифруваненям. Початкове повідомлення може бути замасковане за рахунок процедури перетворення. На іншому кінці незахищеної (по допущенню) лінії зв'язку знаходиться апаратний або програмний засіб, який розшифровує повідомлення для отримання початкового тексту. Шифрувальні пристрої можуть встановлюватися між кінцевими пристроями і лінією зв'язку або можуть бути вбудовані виробниками в периферійні пристрої різними способами. Поступаючі сигнали управління зовнішніми пристроями, стани і ідентифікаційна інформація між компонентами можуть передаватися в незашифрованому вигляді, при цьому ефективність захисту не зменшиться. Останнім часом широко використовується принцип несекретності проектування, коли всі сторони проектування методу шифрування можуть бути загальнодоступними, за винятком ключів. На практиці доцільно застосовувати шифр, суворо відповідний необхідним цілям. Якщо простий дешевий шифр буде в достатній мірі збільшувати “трудомісткість”, розкриття зашифрованого повідомлення, то цього достатньо. У більшості випадків актуальність зашифрованого повідомлення з часом падає, особливо у військовій сфері. Тому часто достатньо щоб повідомлення не було дешифроване лише протягом певного часу. Але потрібно мати на увазі, що деякі схеми шифрування, які на перший погляд здаються стійкими, насправді легко розкриваються, особливо при використанні ЕОМ. На практиці завжди потрібно прагнути до досягнення компромісу між вартістю шифрування і необхідним рівнем безпеки. Щоб зрозуміти зміст зашифрованого повідомлення, неавторизовані особи повинні знати алгоритм шифрування (який їм іноді вдається дізнатися) і ключ (який не повинен бути їм доступний). Ключі не повинні зберігатися в системі довше, ніж це необхідно. У ідеальному випадку їм потрібно знаходитися там тільки на час дійсного використання. 2.2. Шифрування підстановкою. 2.2.1. Прямі підстановки. У прямих підстановках кожний знак початкового тексту замінюється одним або декількома знаками. Одним з важливих підкласів прямих підстановок є моноалфавітні підстановки, в яких встановлюється взаємооднозначна відповідність між кожним знаком аі алфавіту повідомлень А і відповідним знаком hj зашифрованого тексту. Дуже простим прикладом перетворення секретної інформації є шифр Цезаря, який, за переказами, був використаний ще Юлієм Цезарем . Рядок знаків YGBPCGFBOQTGBUPQYBHQTBDCVVGTBUMKKPI є зашифрованою формою наступного повідомлення: WE NEED VORE SNOW FOR BETTER SKIING (Для кращого катання на лижах треба більше снігу). Шифр Цезаря фактично являє собою окремий випадок методу моноалфавітної підстановки букв одного алфавіту. Кожний знак Р з початкового алфавіту замінюється відповідним числом Р(Р), [р(А)=1, р(В)==2,. ... р(Z)=26, пропуск = 0]. Потім формується еквівалентне зашифроване число у з рівняння y(^)=p(Р) +2 (mod 27) (1) Таким чином, у(Т)=р(Т)+2=20+2=22, у(1)=р(1)+2=9+2=11 і т. д. Значення у потім заміняються відповідними їм буквами для отримання зашифрованого тексту. Проілюструємо шифрування методом підстановки шифром який не є шифром Цезаря. Початкове повідомлення: WE NEED MORE SNOW FOR BETTER SKIING. Ключ: вхід: bABCDEFGHIJKLMNOPQRTUVWXYZ вихід: VZHLANQRCWDXFOUSPBTIELGMbKY Зашифрований текст: МNVUNNAVOSTNVIUSMVQSTVHNEENTVIXWWUR Зашифроване повідомлення отримано таким чином. Беремо знак з початкового повідомлення в рядку ВХІД ключа і замінюємо його відповідним знаком з рядка ВИХІД. Цей метод підстановки, хоч до деякої міри і є ефективним для заплутування при випадковому прочитанні, не зможе надовго зупинити досвідченого промислового шпигуна, оскільки він легко піддається здійснюваному за допомогою ЕОМ частотному аналізу зустрічності букв і пар букв. Всі методи моноалфавітної підстановки можна представити як числові перетворення букв початкового тексту, що розглядаються як числа. Кожна буква в тексті множиться на деяке число (назване десятковим коефіцієнтом) і додається до деякого іншого числа (коефіцієнту зсуву) с=(aP+s) mod K (2) де: а - десятковий коефіцієнт; s - коефіцієнт зсуву. Результуюче число зменшується за правилом віднімання модуля K, де K - розмір алфавіту, і зашифрований текст формується із відповідних йому алфавітних еквівалентів. Неважко пересвідчитися, що рівняння (1) для шифру Цезаря є фактично рівнянням (2) з а =1, s=2, і K=27. Існують машини, що мають команду ТРАНСЛЮВАТИ, яка забезпечує дуже легкі для використання шифри підстановки. Наприклад, на ІВМ 370 користувач встановлює таблицю з 256 байтів. Двійкове значення кожного байта, яке користувач хоче зашифрувати, використовується як індекс в таблиці для пошуку відповідного перетвореного байта. Це перетворення здійснюється за одну машинну команду. 2.2.2. Багатоалфавітні підстановки. Проста багатоалфавітна підстановка послідовно і циклічно міняє алфавіти, що використовуються. При u-алфавітній підстановці знак т1, з початкового повідомлення замінюється знаком з алфавіту В1, т2 відповідним з алфавіту В2. .., ті - знаком з алфавіту Ві, mі+1 знову з алфавіту В1 і т. д. ВХІДНИЙ ЗНАК: m1,m2,m3,m4,m5,m6,m7 АЛФАВІТ ПІДСТАНОВКИ: B1,B2,B3,B4,B5,B1,B2,. Ефект використання багатоалфавітної підстановки полягає в тому, що забезпечується маскування природної частотної статистики початкової мови L, оскільки конкретний знак з алфавіту А може бути перетворений в декілька різних знаків шифрувального алфавіту В. Рівень захисту, що забезпечується теоретично, пропорційний довжині періоду в послідовності алфавітів, що використовуються. Як приклад приведемо використання ключа восьмибуквенного слова SECURSTY, що повторюється для шифрування тексту. Запишемо під кожною початковою буквою відповідну букву ключа. Потім будемо розглядати алфавіт, як кільце, що складається з 27 символів. Привласнюючи відповідно значення 0-пропуск, 1-А, 2=В,...,26=Z, будемо мати восьмиалфавітиий шифр підстановки. Ми можемо розглядати перший алфавіт як такий що зсуває кожний знак, вміщений в кільце, на 19 (S), тобто W стає О, А стає Т, В стає U і т. д.; другий алфавіт, як зсуваючий кожний знак на 5 (Е), тобто Е стає J, А стає F, В стає G і т. д. Використовуючи додавання по модулю 27 отримаємо такий зашифрований текст: WE NEED MORE SNOW FOR BETTER SKIING SECURITYSECURITYSECURITYSECURITYSE OJCHWNXYETUZRAGMOEIVCLYHLRADGASJ Така проста багатоалфавітна підстановка (шифр Віжінера) з періодом и вимагає, щоб зловмисник мав в своєму розпорядженні принаймні 20и знаків, перехоплених в шифровці, до того як вона може бути розкрита. G-контурна багатоалфавітна підстановка являє собою метод шифрування, що використовує g наборів алфавітів, що застосовуються циклічно з періодами u1,u2,…ug. Цей шифр розкрити значно складніше, ніж просту багатоалфавітну підстановку. 2.2.3. Монофонічні шифри Монофонічний шифр являє собою багатоалфавітний шифр підстановки, що зрівнює частоту появи зашифрованих знаків і таким чином захищає шифрований текст від розкриття за допомогою частотного аналізу. Для знаків, що зустрічаються часто, потрібна відносно велика кількість зашифрованих еквівалентів. У той же час для знаків, що використовуються нечасто, може виявитися достатнім один або два зашифрованих знаки. 2.3. Загальні принципи для методів перетворення підстановкою. Всі описані методи шифрування можна розглядати як задачі сучасної алгебри. Між К знаками алфавіту А і набором позитивних цілих чисел 0, 1,. ..,К-1 встановлюється довільна відповідність. При додаванні і відніманні по модулю К ці додатні цілі числа формують алгебраїчне кільце, що використовується для шифрування, а також однозначні зворотні перетворення. Тому якщо ми вибираємо ціле w в діапазоні від 0 до К-1, то цим самим автоматично проводимо вибір конкретного перетворення підстановкою ei=mi+w(mod k-1) і зворотнього перетворення mi=ei+(mod K-1). Якщо w фіксоване, то ми маємо одноалфавітну підстановку. Якщо w вибирається з послідовності w1,w2,…wn, то ми маємо багатоалфавітну підстановку з періодом n. Якщо в багатоалфавітній підстановці: а) число знаків в ключі перевищує загальне число початкових знаків, що шифруються; б) ключ використовується тільки один раз; в) початковий текст не може бути викрадений зловмисником, то зашифрований текст є теоретично таким, що нерозкривається і називається системою Вермена. Тому ми завжди прагнемо до довгих наборів знаків ключа. Як буде видно далі, ми можемо на практиці отримувати нескінченні ключові послідовності, які можуть бути використані в багатьох додатках. 2.4. Перестановки. Знаки початкового тексту можна переставляти відповідно до деякого правила. Наприклад, знаки тексту в явній формі WE/NEED/MORE/SNOW/FOR/BETTER/SKIING можуть бути переставлені відповідно до ключа: “переставити угрупування з чотирьох букв, що знаходяться в порядку 1 2 3 4 в порядок 3 1 4 2”. Первинний текст спочатку розбивається на групи WE/N_EED/_ MORE_ /SNO_W/FO_R/BE_TTER_/SKI_ING+, а потім перетворюється в зашифрований текст: /WNE_DE/E_RMEO_N/OS_FWO/_BRE/_ETRT_K/IS_GIXN. Коса межа відповідає пропуску, а + пустому знаку, що використовується для доповнення початкового тексту. Часто з кожним початковим алфавітом використовується декілька пустих знаків (нулів). Однак, якщо зловмисник відгадає довжину угрупування, то він легко може потім зробити різні можливі перестановки, особливо використовуючи ЕОМ. 2.5. Частотний аналіз. Більшість штучних мов (і всі природні мови) мають характерний частотний розподіл букв і інших знаків. Наприклад, буква Е найбільш часто зустрічається в англійській мові, а Z найбільш рідка. Однак це зовсім не говорить про те, що не будуть попадатися англійські (вихідні), повідомлення, в яких інша буква буде зустрічатися частіше, ніж Е, і рідше, ніж Z. Але для дуже великого числа англійських повідомлень можуть бути встановлені певні характерні частоти. Більшість повідомлень, зашифрованих методом перестановки або одноалфавітної підстановки, зберігають характерний частотний розподіл і, таким чином, дають крипто-аналітику шлях до розкриття шифру. Криптоаналітики часто використовують індекс відповідності (ІС) для визначення того, чи знаходяться вони на правильному шляху. По визначенню ІС являє собою оцінку суми квадратів імовірностей кожної букви. Це використовується особливо у тих випадках, коли об'єм зашифрованого тексту відносно великий. Шифровки, які дають значення ІС більші, ніж 0,066 (для англійської мови), самі повідомляють про те, що ймовірно використовувалася одноалфавітна підстановка, даючи, таким чином криптоаналітикам інструмент для того, щоб приступити до розгадки шифру. Якщо ІС знаходиться між 0,052 і 0,066, то, ймовірно, був використаний двохалфавітний шифр підстановки. Криптоаналітик просто бере символ, що найчастіше зустрічається, і передбачає, що це пропуск, потім бере наступний найбільш частий символ і передбачає, що це Е, і т.д., щоб прийти до можливого рішення. Цей процес можна автоматизувати застосувавши ЕОМ, однак аналіз можливих варіантів повідомлень повинна робити людина. Справа дуже ускладнюється, коли криптоаналітик стикається з рівномірним розподілом символів (IС=1/26=0,038 для англійської мови), який виходить при використанні багатоалфавітної підстановки. Текст для шифрування (License.txt) License agreement This License Agreement ("Agreement") accompanies the OllyDbg version 1.10, OllyDbg Plugin Development Kit version 1.10 and related files ("Software"). By using the Software, you agree to be bound by all of the terms and conditions of the Agreement. The Software is distributed "as is", without warranty of any kind, expressed or implied, including, but not limited to warranty of fitness for any particular purpose. In no event will the Author be liable to you for any special, incidental, indirect, consequential or any other damages caused by the use, misuse, or the inability to use of the Software, including any lost profits or lost savings, even if Author has been advised of the possibility of such damages. The Software is owned by Oleh Yuschuk ("Author") and is Copyright (c) 2000- 2004 Oleh Yuschuk. To use this Software on a permanent basis or for commercial purposes, you must register it by filling the supplied registration form and sending it to the Author. You don't need to register Software if you use it exclusively with Randall Hyde's High Level Assembly. If you are already a registered OllyDbg user, you don't need to re-register the Software again. If the Software is registered to a company or organization, any person within the company or organization has the right to use it at work. You may install the registered Software on any number of storage devices, like hard disks, floppy disks etc. and are allowed to make any number of backup copies of this Software. You are not allowed to modify, decompile, disassemble or reverse engineer the Software except and only to the extent that such activity is expressly permitted by applicable law. You are not allowed to distribute or use any parts of the Software separately. You may make and distribute copies of this Software provided that a) the copy contains all files from the original distribution and these files remain unchanged; b) if you distribute any other files (for example, plugins) together with the Software, they must be clearly marked as such and the conditions of their use cannot be more restrictive than conditions of this Agreement; and c) you collect no fee (except for transport media, like CD or diskette), even if your distribution contains additional files. You are allowed to develop and distribute your own plugins -- Dynamic Link Libraries that connect to the Software and make use of the functions implemented in the Software -- free of charge provided that a) your plugins contain no features that persuade or force user to register them, or limit functionality of unregistered plugins; b) you allow free distribution of your plugins on the conditions similar to that of the Software; and c) you collect no fee (except for transport media, like CD or diskette). If you want to develop commercial plugin, please contact Author for a special Agreement. The distribution includes files PSAPI.DLL and DBGHELP.DLL that are the Microsoft(R) Redistributable files. These files should be installed only in the directory where the Software resides. You should use supplied PSAPI.DLL only on Windows NT(R) 4.0. You are not allowed to distribute PSAPI.DLL or DBGHELP.DLL separately from the Software. This Agreement covers only the actual version 1.10 of the OllyDbg and version 1.10 of the OllyDbg Plugin Development Kit. All other versions are covered by separate License Agreements. Ключ для шифрування   ! #"%$'&)(+*-,/.1032547698;:=<?>A@CBEDGFIHKJMLONQPSRUTWVYX[Z]\_^a`cbedgfihkjmlonqpsrutwvyx{z}|~ЃЂѓ‚…„‡†‰€‹ЉЌЊЏЋ‘ђ“’•”—–™˜›љќњџћЎ ЈўҐ¤§¦©Ё«Є­¬Ї®±°іІµґ·¶№ё»єЅјїѕБАГВЕДЗЖЙИЛКНМПОСРУТХФЧЦЩШЫЪЭЬЯЮбагведзжйилкнмпосрутхфчцщшыъэьяю Текст програми для шифрування і розшифрування #include<iostream.h> #include<stdio.h> #include<conio.h> #include<math.h> #include<fstream.h> #include<io.h> void main(void) { char array_alfavit_n[257],filename[64],array_alfavit_o[257],ch,symbol; unsigned int i,j; FILE *fill,*fill_1; clrscr(); cout<<"Enter file name:> "; cin>>filename; for(i=0;i<=256;i++) //Obnylutu masuvu array_alfavit_n[i]=0; for(i=0;i<256;i++) //Stvoryjemo alfavit array_alfavit_n[i]=i; //Stvoryjemo kljych for(i=0;i<255;i++) { symbol=array_alfavit_n[i]; array_alfavit_o[i+1]=symbol; symbol=array_alfavit_n[i+1]; array_alfavit_o[i]=symbol; i++; } fill_1=fopen("key.txt","w"); for(i=0;i<256;i++) fprintf(fill_1,"%c",array_alfavit_o[i]); fill_1=fopen(filename,"r"); fill=fopen("shufr.bin","w"); while(!feof(fill_1)) //Shufryvannja { symbol=fgetc(fill_1); if(symbol!=-1) fputc(array_alfavit_o[symbol],fill); } fclose(fill); fclose(fill_1); //22222222222222 fill_1=fopen("shufr.bin","r"); fill=fopen("deshufr.txt","w"); cout<<"Rozshufryvatu?(y/n) "; cin>>symbol; if(symbol=='y') { while(!feof(fill_1)) //Deshufryvannja { symbol=fgetc(fill_1); if(symbol!=-1) fputc(array_alfavit_o[symbol],fill); } } fclose(fill); fclose(fill_1); } Текст зашифрованого файлу Mhbdord!`fsddldou Uihr!Mhbdord!@fsddldou!)#@fsddldou#(!`bbnlq`ohdr!uid!NmmxEcf!wdsrhno!0/01- NmmxEcf!Qmtfho!Edwdmnqldou!Jhu!wdsrhno!0/01!`oe!sdm`ude!ghmdr!)#Rnguv`sd#(/ Cx!trhof!uid!Rnguv`sd-!xnt!`fsdd!un!cd!cntoe!cx!`mm!ng!uid!udslr!`oe bnoehuhnor!ng!uid!@fsddldou/! Uid!Rnguv`sd!hr!ehrushctude!#`r!hr#-!vhuintu!v`ss`oux!ng!`ox!jhoe-!dyqsdrrde ns!hlqmhde-!hobmtehof-!ctu!onu!mhlhude!un!v`ss`oux!ng!ghuodrr!gns!`ox q`suhbtm`s!qtsqnrd/!Ho!on!dwdou!vhmm!uid!@tuins!cd!mh`cmd!un!xnt!gns!`ox rqdbh`m-!hobhedou`m-!hoehsdbu-!bnordptdouh`m!ns!`ox!nuids!e`l`fdr!b`trde!cx uid!trd-!lhrtrd-!ns!uid!ho`chmhux!un!trd!ng!uid!Rnguv`sd-!hobmtehof!`ox!mnru qsnghur!ns!mnru!r`whofr-!dwdo!hg!@tuins!i`r!cddo!`ewhrde!ng!uid!qnrrhchmhux ng!rtbi!e`l`fdr/ Uid!Rnguv`sd!hr!nvode!cx!Nmdi!Xtrbitj!)#@tuins#(!`oe!hr!Bnqxshfiu!)b(!3111, 3115!Nmdi!Xtrbitj/!Un!trd!uihr!Rnguv`sd!no!`!qdsl`odou!c`rhr!ns!gns!bnlldsbh`m qtsqnrdr-!xnt!ltru!sdfhruds!hu!cx!ghmmhof!uid!rtqqmhde!sdfhrus`uhno!gnsl!`oe rdoehof!hu!un!uid!@tuins/!Xnt!eno&u!odde!un!sdfhruds!Rnguv`sd!hg!xnt!trd!hu dybmtrhwdmx!vhui!S`oe`mm!Ixed&r!Ihfi!Mdwdm!@rrdlcmx/!Hg!xnt!`sd!`msd`ex!` sdfhrudsde!NmmxEcf!trds-!xnt!eno&u!odde!un!sd,sdfhruds!uid!Rnguv`sd!`f`ho/ Hg!uid!Rnguv`sd!hr!sdfhrudsde!un!`!bnlq`ox!ns!nsf`oh{`uhno-!`ox!qdsrno!vhuiho uid!bnlq`ox!ns!nsf`oh{`uhno!i`r!uid!shfiu!un!trd!hu!`u!vnsj/!Xnt!l`x!horu`mm uid!sdfhrudsde!Rnguv`sd!no!`ox!otlcds!ng!runs`fd!edwhbdr-!mhjd!i`se!ehrjr- gmnqqx!ehrjr!dub/!`oe!`sd!`mmnvde!un!l`jd!`ox!otlcds!ng!c`bjtq!bnqhdr!ng!uihr Rnguv`sd/ Xnt!`sd!onu!`mmnvde!un!lnehgx-!edbnlqhmd-!ehr`rrdlcmd!ns!sdwdsrd!dofhodds uid!Rnguv`sd!dybdqu!`oe!nomx!un!uid!dyudou!ui`u!rtbi!`buhwhux!hr!dyqsdrrmx qdslhuude!cx!`qqmhb`cmd!m`v/!Xnt!`sd!onu!`mmnvde!un!ehrushctud!ns!trd!`ox q`sur!ng!uid!Rnguv`sd!rdq`s`udmx/!Xnt!l`x!l`jd!`oe!ehrushctud!bnqhdr!ng!uihr Rnguv`sd!qsnwhede!ui`u!`(!uid!bnqx!bnou`hor!`mm!ghmdr!gsnl!uid!nshfho`m ehrushctuhno!`oe!uidrd!ghmdr!sdl`ho!tobi`ofde:!c(!hg!xnt!ehrushctud!`ox nuids!ghmdr!)gns!dy`lqmd-!qmtfhor(!unfduids!vhui!uid!Rnguv`sd-!uidx!ltru!cd bmd`smx!l`sjde!`r!rtbi!`oe!uid!bnoehuhnor!ng!uidhs!trd!b`oonu!cd!lnsd sdrushbuhwd!ui`o!bnoehuhnor!ng!uihr!@fsddldou:!`oe!b(!xnt!bnmmdbu!on!gdd )dybdqu!gns!us`orqnsu!ldeh`-!mhjd!BE!ns!ehrjduud(-!dwdo!hg!xnts!ehrushctuhno bnou`hor!`eehuhno`m!ghmdr/ Xnt!`sd!`mmnvde!un!edwdmnq!`oe!ehrushctud!xnts!nvo!qmtfhor!,,!Exo`lhb!Mhoj Mhcs`shdr!ui`u!bnoodbu!un!uid!Rnguv`sd!`oe!l`jd!trd!ng!uid!gtobuhnor hlqmdldoude!ho!uid!Rnguv`sd!,,!gsdd!ng!bi`sfd!qsnwhede!ui`u!`(!xnts!qmtfhor bnou`ho!on!gd`utsdr!ui`u!qdsrt`ed!ns!gnsbd!trds!un!sdfhruds!uidl-!ns!mhlhu gtobuhno`mhux!ng!tosdfhrudsde!qmtfhor:!c(!xnt!`mmnv!gsdd!ehrushctuhno!ng!xnts qmtfhor!no!uid!bnoehuhnor!rhlhm`s!un!ui`u!ng!uid!Rnguv`sd:!`oe!b(!xnt!bnmmdbu on!gdd!)dybdqu!gns!us`orqnsu!ldeh`-!mhjd!BE!ns!ehrjduud(/!Hg!xnt!v`ou!un edwdmnq!bnlldsbh`m!qmtfho-!qmd`rd!bnou`bu!@tuins!gns!`!rqdbh`m!@fsddldou/ Uid!ehrushctuhno!hobmtedr!ghmdr!QR@QH/EMM!`oe!ECFIDMQ/EMM!ui`u!`sd!uid Lhbsnrngu)S(!Sdehrushctu`cmd!ghmdr/!Uidrd!ghmdr!rintme!cd!horu`mmde!nomx!ho uid!ehsdbunsx!vidsd!uid!Rnguv`sd!sdrhedr/!Xnt!rintme!trd!rtqqmhde!QR@QH/EMM nomx!no!Vhoenvr!OU)S(!5/1/!Xnt!`sd!onu!`mmnvde!un!ehrushctud!QR@QH/EMM!ns ECFIDMQ/EMM!rdq`s`udmx!gsnl!uid!Rnguv`sd/ Uihr!@fsddldou!bnwdsr!nomx!uid!`but`m!wdsrhno!0/01!ng!uid!NmmxEcf!`oe wdsrhno!0/01!ng!uid!NmmxEcf!Qmtfho!Edwdmnqldou!Jhu/!@mm!nuids!wdsrhnor!`sd bnwdsde!cx!rdq`s`ud!Mhbdord!@fsddldour/ Текст програми для дешифрації методом частотного аналізу #include<stdio.h> #include<conio.h> #include<math.h> #include<iostream.h> #include<fstream.h> class sym { public: char ch; float chastota; }; void main(void) { sym alfavit[257],key[257]; char symbol,filename[64]; float tsufra; int i,j,n,m=0; long int siz,siz1; FILE *fill_et,*fill_sh; clrscr(); for(i=0;i<257;i++) { alfavit[i].ch=0; alfavit[i].chastota=0; key[i].ch=0; key[i].chastota=0; } siz=0; cout<<"Enter file name (ETALON) > "; cin>>filename; fill_et=fopen(filename,"r"); while(!feof(fill_et)) //Formyjemo 1tab { siz++; symbol=fgetc(fill_et); if(symbol!=-1) { alfavit[symbol].ch=symbol; alfavit[symbol].chastota++; } } for(j=0;j<255;j++) //Sortyvannja for(i=0;i<255;i++) if(alfavit[i+1].chastota>alfavit[i].chastota) { tsufra=alfavit[i+1].chastota; alfavit[i+1].chastota=alfavit[i].chastota; alfavit[i].chastota=tsufra; symbol=alfavit[i+1].ch; alfavit[i+1].ch=alfavit[i].ch; alfavit[i].ch=symbol; } for(i=0;i<256;i++) { if(alfavit[i].chastota==0) break; alfavit[i].chastota=alfavit[i].chastota/siz; } n=i; siz1=0; fclose(fill_et); fill_et=fopen("shufr.bin","r"); while(!feof(fill_et)) //Formyjemo 2tab { siz1++; symbol=fgetc(fill_et); if(symbol!=-1) { key[symbol].ch=symbol; key[symbol].chastota++; } } for(j=0;j<255;j++) //Sortyvannja for(i=0;i<255;i++) if(key[i+1].chastota>key[i].chastota) { tsufra=key[i+1].chastota; key[i+1].chastota=key[i].chastota; key[i].chastota=tsufra; symbol=key[i+1].ch; key[i+1].ch=key[i].ch; key[i].ch=symbol; } for(i=0;i<256;i++) { if(key[i].chastota==0) break; key[i].chastota=key[i].chastota/siz1; } m=i; fclose(fill_et); fill_et=fopen("deshufr_2.txt","w"); fill_sh=fopen("shufr.bin","r"); while(!feof(fill_sh)) //Deshufryvannja { symbol=fgetc(fill_sh); if(symbol!=-1) for(i=0;i<m;i++) if(symbol==key[i].ch) fprintf(fill_et,"%c",alfavit[i].ch); } fclose(fill_et); fclose(fill_sh); } Текст дешифрованого файлу Tacenre sboeementff1lar Tacenre _boeement MD_boeementD' sccim-snaer tle x00u.pb Ieorain SES,wfx00u.pb R0dban .eIe0i-ment 6at Ieorain SES, snh oe0steh a0er MDgi tysoeD'EfLu dranb tle gi tysoew uid sboee ti pe pidnh pu s00 i tle teomr snhfcinhatainr i tle _boeementE ff1le gi tysoe ar hartoapdteh Dsr arDw yatlidt ysoosntu i snu Aanhw e)-oerrehfio am-0aehw anc0dhanbw pdt nit 0amateh ti ysoosntu i atnerr io snuf-sotacd0so -do-ireE ;n ni eIent ya00 tle _dtlio pe 0asp0e ti uid io snufr-ecas0w ancahents0w anhaoectw cinreFdentas0 io snu itleo hsmsber csdreh puftle drew mardrew io tle anspa0atu ti dre i tle gi tysoew anc0dhanb snu 0irtf-oi atr io 0irt rsIanbrw eIen a _dtlio lsr peen shIareh i tle -irrapa0atufi rdcl hsmsberEff1le gi tysoe ar iyneh pu x0el OdrcldA MD_dtlioD' snh ar 2i-uoablt Mc' k,,,Cfk,,? x0el OdrcldAE 1i dre tlar gi tysoe in s -eomsnent psrar io io cimmeocas0f-do-irerw uid mdrt oebarteo at pu a00anb tle rd--0aeh oebartostain iom snhfrenhanb at ti tle _dtlioE Oid hin|t neeh ti oebarteo gi tysoe a uid dre atfe)c0draIe0u yatl vsnhs00 Nuhe|r Nabl TeIe0 _rremp0uE ; uid soe s0oeshu sfoebarteoeh x00u.pb dreow uid hin|t neeh ti oeCoebarteo tle gi tysoe sbsanEf; tle gi tysoe ar oebarteoeh ti s cim-snu io iobsna3stainw snu -eorin yatlanftle cim-snu io iobsna3stain lsr tle oablt ti dre at st yioAE Oid msu anrts00ftle oebarteoeh gi tysoe in snu ndmpeo i rtiosbe heIacerw 0aAe lsoh harArwf 0i--u harAr etcE snh soe s00iyeh ti msAe snu ndmpeo i pscAd- ci-aer i tlarfgi tysoeEffOid soe nit s00iyeh ti miha uw hecim-a0ew harsrremp0e io oeIeore enbaneeoftle gi tysoe e)ce-t snh in0u ti tle e)tent tlst rdcl sctaIatu ar e)-oerr0uf-eomatteh pu s--0acsp0e 0syE Oid soe nit s00iyeh ti hartoapdte io dre snuf-sotr i tle gi tysoe re-soste0uE Oid msu msAe snh hartoapdte ci-aer i tlarfgi tysoe -oiIaheh tlst s' tle ci-u cintsanr s00 a0er oim tle ioabans0fhartoapdtain snh tlere a0er oemsan dnclsnbeh( p' a uid hartoapdte snufitleo a0er M io e)sm-0ew -0dbanr' tibetleo yatl tle gi tysoew tleu mdrt pefc0eso0u msoAeh sr rdcl snh tle cinhatainr i tleao dre csnnit pe mioefoertoactaIe tlsn cinhatainr i tlar _boeement( snh c' uid ci00ect ni eefMe)ce-t io tosnr-iot mehasw 0aAe 2. io harAette'w eIen a uido hartoapdtainfcintsanr shhatains0 a0erEffOid soe s00iyeh ti heIe0i- snh hartoapdte uido iyn -0dbanr CC .unsmac TanAfTaposoaer tlst cinnect ti tle gi tysoe snh msAe dre i tle dnctainrfam-0ementeh an tle gi tysoe CC oee i clsobe -oiIaheh tlst s' uido -0dbanrfcintsan ni estdoer tlst -eordshe io ioce dreo ti oebarteo tlemw io 0amatf dnctains0atu i dnoebarteoeh -0dbanr( p' uid s00iy oee hartoapdtain i uidof-0dbanr in tle cinhatainr rama0so ti tlst i tle gi tysoe( snh c' uid ci00ectfni ee Me)ce-t io tosnr-iot mehasw 0aAe 2. io harAette'E ; uid ysnt tifheIe0i- cimmeocas0 -0dbanw -0esre cintsct _dtlio io s r-ecas0 _boeementEff1le hartoapdtain anc0dher a0er Rg_R;E.TT snh .L"NGTRE.TT tlst soe tlefPacoiri tMv' vehartoapdtsp0e a0erE 1lere a0er rlid0h pe anrts00eh in0u anftle haoectiou yleoe tle gi tysoe oeraherE Oid rlid0h dre rd--0aeh Rg_R;E.TTfin0u in Yanhiyr 41Mv' ?E,E Oid soe nit s00iyeh ti hartoapdte Rg_R;E.TT iof.L"NGTRE.TT re-soste0u oim tle gi tysoeEff1lar _boeement ciIeor in0u tle sctds0 Ieorain SES, i tle x00u.pb snhfIeorain SES, i tle
Антиботан аватар за замовчуванням

10.02.2013 23:02-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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