- •1 Аналіз методів формування хешу
- •Основні поняття функцій хешування
- •Розглянемо основні вимоги до функцій хешування. Нехай, хеш-код створюється функцією н [1]: , де є повідомленням довільної довжини і є хеш-кодом фіксованої довжини.
- •Відомі атаки на функції хешування
- •Аналіз відомих функцій хешування
- •Логіка виконання sha-1. Алгоритм одержує на вході повідомлення максимальної довжини 264 бітів і створює як вихід хеш-код повідомлення довжиною 160 бітів. Алгоритм складається з таких кроків:
- •1.4 Результати проведеного аналізу функцій хешування
- •2 Розробка структури і алгоритму програмного засобу
- •2.1 Розробка структури програми та взаємодії модулів
- •2.2 Розробка алгоритму обчислення хешу на основі еліптичних кривих
- •2.3 Опис модулів з набором параметрів
- •3 Реалізація та аналіз роботи програмного засобу
- •3.1 Обґрунтування вибору засобів реалізації
- •3.2 Програмна реалізація модуля формування обчислень в скінчених полях
- •3.3 Програмна реалізація модуля формування обчислень в групі точок еліптичних кривих
- •3.4 Програмна реалізація модуля обчислення хешу на основі еліптичних кривих
- •3.5 Аналіз роботи програмного засобу
- •Висновки
- •Список використаних джерел
- •Додатки
- •Додаток г
2.3 Опис модулів з набором параметрів
Файл ecchash.inc містить базові параметри поля визначені, як T = (m, f(x), a, b, G, n, h), де m – степінь розширення скінченного поля; f(x) – irreducible бінарний поліном порядку m представлений у вигляді ; a, b – коефіцієнти як параметри еліптичної кривої E( визначені виразом вигляду: ; G – базова точка еліптичної кривої; n – порядок базової точки G; h – ціле число – кофактор h = # E()/n.
Лістинг даних файлів приведено в додатку Б.
Файл ecchash.h – це файл заголовку в якому визначено основні константи необхідні для роботи функцій.
Лістинг даного файлу приведено в додатку В.
3 Реалізація та аналіз роботи програмного засобу
3.1 Обґрунтування вибору засобів реалізації
На сьогодні існує значна кількість мов програмування кожна з яких може бути використана для вирішення якоїсь конкретної задачі. Мови програмування не можна порівнювати між собою без зв’язку з задачами які потрібно вирішувати. Кожна мова програмування проектується для максимально ефективного рішення свого класу задач. Наприклад, мова фортран (Fortran - FORmula TRANslator - транслятор формул) - для чисельних обчислень, мова Лісп (Lisp - LISt Processing - обробка символів) - для вирішення задач штучного інтелекту і таке ін.
Таким чином до написання програми підводиться питання вибору мови програмування, яка б являла собою кращий засіб для реалізації поставленої задачі.
Мови програмування, що можуть бути використані, враховуючи потреби та можливості розробника приведені в табл. 3.1.
Для реалізації програми можливо використовувати декілька мов програмування. В даній роботі для написання програмного коду використано набір компіляторів GCC (GNU Compiler Collection).
GCC - сучасний засіб швидкої розробки корпоративних інформаційних систем, що сполучає у собі зручності та різноманітні можливості повторного використання коду, відкриту архітектуру і можливість використання високопродуктивного компілятора мови С/C++, що є на сьогоднішній день однією із самих популярних мов програмування.
Таблиця 3.1 - Огляд мов програмування
Назва |
Особливості |
С/С++ |
Універсальна мова програмування, має широкі функціональні можливості і високу ефективність коду. За допомогою додаткових об‘єктно-орієнтованих бібліотек (напр. MFC) дозволяє помірними затратами часу реалізовувати професійні інтерфейси. Доступ до даних може бути як безпосередньо до інтерфейсу СКБД так і через ODBC |
Pascal |
Універсальна мова програмування. Код зручний для сприйняття. В чистому вигляді для розробки бізнес-прикладень не використовується. Є основою RAD Delphi. |
Visual Basic |
Підтримується корпорацією Microsoft як універсальна мова для створення прикладень для роботи з базами даних(через DAO i ODBC), Інтернет (підтримується лише в Microsoft Explorer). Є інтерпретатором. Не підтримується на інших платформах. |
Основною причиною вибору середовища для реалізації стали значні переваги цієї мови, серед яких такі:
-
Швидкість розробки програми.
-
Висока продуктивність розроблених додатків за рахунок отримання 32-розрядного коду, що виконується, за допомогою оптимізуючого компілятора.
-
Не високі вимоги розробленого додатка до ресурсів комп'ютера.
-
Можливість повного доступу до функцій сучасних операційних систем.
-
Можливість модернізації середовища розробки за рахунок вбудовування в неї нових компонентів, інструментів, експертів.
-
Вдало розроблена ієрархія об'єктів, використовуваних для реалізації.
-
Використання для написання коду однієї із самих поширених та ефективних мов програмування С/С++.