Page 26 - 4395
P. 26
випадкового вибору ключа е, що є ітеративною. Для курсової роботи,
де не застосовуються великі числа, можна значно спростити цю
процедуру за допомогою вбудованої MatLab-функції PRIMES(Е), яка
повертає всі прості числа, менші або рівні Е. Якщо ключ е обрати з
другої половини цього списку, необхідні умови виконуються.
Використання цієї процедури дозволяє отримати, наприклад,
е = 653. Це значення треба ввести у програму (рядок 10), після чого
за допомогою функції INVERSE (рядок 11) визначається ключ d як
обернений до е за модулем Е.
Для правильного шифрування-дешифрування ключі е і d мають
бути взаємно оберненими за модулем п. Перевірка цього виконується
оператором IF (рядки 13-16). Якщо взаємна оберненість не має
місця, виводиться повідомлення “Ключі обрано невірно!”, після чого
оператор KEYBOARD передає управління до клавіатури. У цьому
режимі оператору доступні всі модулі програми і всі засоби MatLab,
що дозволяє виправити помилки. Для повернення у програму, що
виконується, необхідно ввести команду RETURN. При цьому робота
програми починається з оператора, наступного після KEYBOARD.
Подальші рядки 17-23 призначені для друку розрахованих
значень. Виводяться на дисплей значення змінних p, q, n, E, e, d з
відповідними поясненнями. Для форматного виводу застосовний
оператор SPRINTF, що запозичений з мови С. Вивід рядків доцільно
здійснити за допомогою функції DISP. Оператор 17 виводить
порожній від тексту рядок.
Нарешті, 26-28 служать для обміну значень ключів у випадку
вибору значення 'Signature' змінної ALTERNATIVE у блоці
MAIN_RSA (рядок 13), що задає режим підтвердження цифрового
підпису.
3.3 Модуль шифрування ENCRYPT
Модуль шифрування ENCRYPT (див. В.6) призначений для
шифрування явних текстів в обох режимах: шифрування-
дешифрування и підтвердження цифрового підпису.
Головною частиною модуля є цикл (рядки 24-35) по кількості
символів явного тексту (літери, розділові знаки, пропуски), який по
черзі підносить до степеня за модулем 3-значне десяткове число, що
є кодом відповідного символу. На початку циклу (рядок 24)
створюється і обнуляється змінна-рядок CRYPT, в якій будуть
26