Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Шифр моноалфавітної заміни (шифр Цезаря) Варіант 16

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

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

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

Рік:
2018
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Захист інформації в комп’ютерних системах

Частина тексту файла

Міністерство освіти і науки Національний університет „Львівська політехніка” Кафедра EОМ Звіт з лабораторної роботи № 1 з дисципліни: “ Захист інформації в комп’ютерних системах ” Шифр моноалфавітної заміни (шифр Цезаря) Варіант 16 2018 Тема: Шифр моноалфавітної заміни (шифр Цезаря) Мета: Ознайомитись з основами класичної техніки шифрування – шифрами моноалфавітної заміни, та типовим прикладом шифрів даного виду – шифром Цезаря. Завдання: Розробити програму, що реалізує шифрування вихідного повідомлення за допомогою шифру Цезаря. Повідомлення, що необхідно зашифрувати, має бути задано українською мовою. В якості ключа шифрування обирається номер студента у списку групи. Оформити та захистити звіт. Хід роботи: Код реалізації алгоритму #include <iostream> #include <fstream> #include <locale> #include <vector> using namespace std; void encrypt (const vector<char> &alphabet, int n, const char *source, const char *target); void decipher (const vector<char> &alphabet, int n, const char *source, const char *target); int main(int argc, char** argv) { string source; string target; string pick; int key = 3; setlocale(LC_ALL,"Russian_Russia.1251"); vector<char> alphabet = { 'а' , 'б' , 'в' , 'г' , 'ґ' , 'д' , 'е' , 'є' , 'ж' , 'з' , 'и' , 'і' , 'ї' , 'й' , 'к' , 'л' , 'м' , 'н' , 'о' , 'п' , 'р' , 'с' , 'т' , 'у' , 'ф' , 'х' , 'ц' , 'ч' , 'ш' , 'щ' , 'ь' , 'ю' , 'я' }; if(argc == 4){ source = argv[1]; target = argv[2]; pick = argv[3]; } else if (argc == 5){ source = argv[1]; target = argv[2]; pick = argv[3]; key = static_cast<int >(*argv[4]); } else { std::cout << "How to use: <source> <target> <coding/decoding> <key>" << std::endl; return 0; } if(pick == "coding") { encrypt(alphabet, key, source.c_str(), target.c_str()); return 0; } else if ( pick == "decoding"){ decipher(alphabet, key, source.c_str(), target.c_str()); return 0; } else { std::cout << "How to use: <source> <target> <coding/decoding> <key>" << std::endl; return 0; } } void encrypt (const vector<char> &alphabet, int n, const char *source, const char *target) { ifstream from(source); ofstream to(target); from >> std::noskipws; bool flag; bool upperflag; char c; while (from >> c) { flag = false; if(isupper(c)){ c = static_cast<char>(tolower(c)); upperflag = true; } else upperflag = false; vector<char>::size_type i = 0; while(i != alphabet.size() && alphabet[i] != c) i++; if (i != alphabet.size()) { c = alphabet[(i + n) % alphabet.size()]; if(upperflag) c = static_cast<char>(toupper(c)); to << c; flag = true; } if (!flag) to << c; } } void decipher (const vector<char> &alphabet, int n, const char *source, const char *target) { ifstream from(source); ofstream to(target); from >> std::noskipws; bool flag; bool upperflag; char c; while (from >> c) { flag = false; if(isupper(c)){ c = static_cast<char>(tolower(c)); upperflag = true; } else upperflag = false; vector<char>::size_type i = 0; while(i != alphabet.size() && alphabet[i] != c) i++; if (i != alphabet.size()) { c = alphabet[(alphabet.size() + (i - n)) % alphabet.size()]; if(upperflag) c = static_cast<char>(toupper(c)); to << c; flag = true; } if (!flag) to << c; } } / Рис. 1. Зразок тексту для кодування / Рис. 2. Текст після кодування Висновок На даній...
Антиботан аватар за замовчуванням

24.11.2018 18:11

Коментарі

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

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

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

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

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини