Page 27 - 4395
P. 27
накопичуватись криптограми. Основна функція 27 INVOLUTION
має наступні аргументи: елемент масиву DB_PLAIN — 3-значний
код символу; показник степеня е — відкритий ключ; модуль операції
п. Функція INVOLUTION повертає ціле число у, яке за допомогою
функції INT2STR перетворюється (рядок 28) у цифровий рядок.
Якщо цей рядок не має 3-х символів (багато символів мають 2-
значний код ASCII), у циклі передбачено (рядки 29-32) його
доповнення нулями (нулем) попереду за допомогою функції
STRCAT, що не змінює самого числа. Цикл завершується (рядок 34)
нарощуванням рядка криптограми кодом поточного символу.
Описаному циклу передує введення явного тексту та його
перетворення у цифровий код.
Текст для шифрування вводиться англійською або українською
мовами залежно від типу завдання. Оскільки курсова робота не є
роботою з програмування, для введення використовується
найпростіший спосіб: достатньо ввести текст як рядок PLAIN
англійською (рядок 8) або українською (рядок 9) мовами. Зрозуміло,
що використовується лише один з двох варіантів. Тому в режимі
шифрування-дешифрування слід виключити рядок 9, шляхом
встановлення на початку символу ‘%’ (це робить рядок 9
коментарем). У режимі підтвердження цифрового підпису, навпаки,
слід символ ‘%’ зібрати. При цьому будуть виконуватись обидва
рядка 8 і 9 (причому рядок 8 безглуздо), але PLAIN буде визначатися
рядком 9.
Рядки 10-20 служать для формування заголовка перед виводом
явного тексту. Доцільно зробити ці заголовки різними в різних
режимах. Для цього ідеально підходить вбудована функція SWITCH
– оператор вибору між двома варіантами значень змінної
ALTERNATIVE: ‘Crypt’ та ’Signature’. Оператор перевіряє значення
змінної ALTERNATIVE і виводить заголовок тільки того режиму,
який відповідає певному значенню, що задається при виборі режиму
у блоці MAIN_RSA, рядок 13 (у нашому прикладі
alternative='Crypt', тобто застосовано варіант режиму шифрування-
дешифрування). Якщо значення змінної ALTERNATIVE не є ‘Crypt’
і не є ’Signature’, виводиться повідомлення: 'Помилка вибору
завдання!', після чого управління виконанням програми передається
до клавіатури (див. 3.2).
Тепер слідує вивід значення змінної PLAIN (рядок 21),
визначення довжини цієї змінної (рядок 22) і обчислення масиву
27