Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursova.doc
Скачиваний:
2
Добавлен:
08.09.2019
Размер:
1.71 Mб
Скачать

Розділ 3. Особливості реалізації

В даному розділі описуються особливості програмної реалізації додатків. Розробка проводилися на мові С++ в середовищі розробки Microsoft Visual Studio 2005.

  1. Реалізація архітектури «клієнт – сервер» на базі сокетів

В якості протоколу передачі даних використовується протокол ТСР. Для реалізації з’єднання між клієнтом та сервером на основі сокетів використовуються бібліотека wsock32.dll та її основні функції:

WSAStartup – ініціалізація бібліотеки wsock32.dll.

SOCKET – створення сокета. Для цього необхідно задати тип протоколу (AF_INET для ТСР/ІР ) та тип передачі (SOCK_STREAM для синхронного типу). При некоректному виконанні повертає значення -1.

SOCKADDR_IN – отримання параметрів для сокета. Для цього необхідно оголосити структуру SOCKADDR_IN sin, завдяки якій встановлюється порт, адреса та ім’я вузла

BIND – пов’язання локальної адреси з сокетом.

LISTEN – прослуховування сервером порту в режимі сну, очікування під’єднання клієнта.

CONNECT – функція приєднання клієнтом до сервера.

ACCEPT – реакція сервера на підключення клієнта, що переводить його з режиму сну в режим очікування вказівок.

SEND – функція пересилання повідомлень або блоків байтів.

RECV – функція прийому переданих протилежною стороною даних.

  1. Передача файлів

Текстові файли не є єдино можливим способом зберігання інформації на диску. Можна запам'ятовувати інформацію і в двійковому вигляді.

Принципово обробка двійкових файлів не дуже сильно відрізняється від обробки текстових файлів. У будь-якому випадку, перш ніж працювати з файлом, слід зв'язати його фізичне ім'я з логічним ім'ям (з файловим потоком) і відкрити файл, вказавши режим доступу. Після роботи з файлом його необхідно закрити. Тим не менш, відмінності обробки двійкових файлів і текстових все ж існують.[4] Функції для роботи з бінарними даними:

FOPEN – функція, що відкриває вже існуючий файл для читання або створює новий для записування. Режими роботи з бінарними даними: «rb» «r+b» «wb» «w+b».

FREAD – читає відкритий файл блоками заданої довжини.

FWRITE – запис у відкритий файл блоків даних.

FCLOSE – закриття відкритих файлів.

  1. Шифрування - дешифрування

Криптопровайдером називають незалежний модуль, що забезпечує безпосередню роботу з криптографічними алгоритмами. Бібліотека, що забезпечує роботу криптопровайдера – Advapi32.dll.

Функції роботи c криптопровайдера можна розділити на наступні групи:

  • Функції ініціалізації контексту і параметрів криптопровайдера;

  • Функції генерації ключів і роботи з ними;

  • Функції хешування та отримання цифрового підпису даних;

  • Функції зашифровування / розшифровування даних.

Функції ініціалізації контексту і отримання параметрів криптопровайдера

CryptAcquireContext. За допомогою даної функції в першу чергу проводиться ініціалізація контексту криптопровайдера. Також за допомогою останнього параметра даної функції можна створити або видалити контейнер ключів.

CryptReleaseContext. Ця функція призначена для звільнення контексту криптопровайдера, отриманого за допомогою функції CryptAcquireContext.

CryptGetProvParam. За допомогою цієї функції можна отримати значення різних параметрів криптопровайдера.

Функції генерації ключів і роботи з ними

CryptGenKey. Ця функція призначена для генерації сесійного ключа (ключ, який використовується тільки протягом поточної сесії роботи), а також для генерації пар ключів для обміну (публічний і закритий ключ) і цифрового підпису.

CryptDestroyKey. Функція призначена для звільнення раніше отриманого хендлу ключа. Функцію слід викликати завжди для запобігання витоків пам'яті у додатку.

CryptDeriveKey. Функція призначена для генерації сесійного ключа на основі хешу даних. Тобто дана функція генерує один і той же сесійний ключ, якщо їй передаються однакові значення хешу даних. Функція корисна у випадку генерації сесійного ключа на основі пароля.

Функції зашифровування / розшифровування даних

CryptEncrypt. Основна базова функція шифрування даних. Як параметри використовує раніше отримані контексти криптопровайдера і сесійного ключа.

CryptDecrypt. Основна базова функція розшифрування даних. Як параметри використовуються раніше отримані контекст криптопровайдера і хендл сесійного ключа.

Функції хешування та отримання цифрового підпису даних

CryptCreateHash. Функція створює хеш-об'єкт, призначений для генерації хеш-значення даних. В якості основних параметрів приймає раніше отримані контекст криптопровайдера і алгоритм формування хешу даних.

CryptDestroyHash. Функція використовується для звільнення хеш-об'єкта.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]