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
   21   22   23   24   25   26   27   28   29   30   31