Page 23 - 4395
P. 23
процедури. Тому краще реалізувати етапи шифрування і
дешифрування у двох різних модулях.
Щодо вказаних перетворень рядок-число та число-рядок, то їх
доцільно здійснити на основі коду ASCII (American standard code for
information interchange), оскільки MatLab має для цього відповідні
вбудовані функції DOUBLE i CHAR. Функція DOUBLE перетворює
текстовий рядок на масив десяткових чисел, кожний елемент якого є
кодом ASCII відповідного символу. Функція CHAR навпаки має
аргументом масив кодів і повертає літерний текст. Але, оскільки
MatLab, як стратегічний продукт, було заборонено розповсюджувати
на східну Європу, дія ASCII була обмежена першими 127
символами. Це не дозволяло використовувати перші версії програми
для обробки текстів на основі кирилиці. У подальшому ситуація
покращувалась — сучасні версії MatLab 7 та MatLab 8 вже не
мають цього недоліку. MatLab 6.5, яка є найбільш поширеною зараз,
допускає роботу з українським та російським текстами за одним
виключенням: змінна-рядок не сприймає значення української або
російської літери ‘c’ (на литеру ‘C’ обмеження не поширюється!).
Таким чином, при роботі з текстами у програмі MatLab 6.5 слід
всюди замість символу ‘c’ з кирилиці використовувати англійську
літеру ‘c’.
Таким чином, структура програми природно складається з
чотирьох програмних модулів, що працюють послідовно (див. В.1):
MAIN_RSA — головний модуль програми, обчислення
змінних, які є спільними для всіх модулів, визначення порядку
виклику окремих модулів;
KEYS — модуль визначення ключів;
ENCRYPT — модуль виконання шифрування;
DECRYPT — модуль виконання дешифрування.
Відповідно, текст програми містить чотири SCRIPT-файли, що
мають вказані імена.
Для однакових розрахунків, які часто застосовуються доцільно
створити MatLab-функції. Такими є піднесення до степеня і
знаходження оберненого за модулем. Перше як при шифруванні, так
і при дешифруванні знаходиться у циклі, кількість повторювань
якого визначається довжиною повідомлення. Друге використовується
при визначенні ключів і може повторюватись не один раз. Тому
доцільно ввести наступні функції:
INVERSE — знаходження оберненого за модулем;
23