Page 28 - 4395
P. 28

десяткових чисел DB_PLAIN, який представляє явний текст  PLAIN
                 (рядок  23).    На  цьому  підготовка  циклу  завершується.  Далі
                 виконується основний цикл (див. початок підрозділу).
                        На  закінчення  модуля  виводяться  заголовки  для  криптограми

                 знов  з  використанням  оператора    SWITCH  і  значень  ‘Crypt’  та
                 ’Signature’ змінної ALTERNATIVE (рядки 36-42) і саме криптограма
                 (рядок 43).


                        3.4  Модуль дешифрування DECRYPT

                         Модуль дешифрування DECRYPT (див. В.7) призначений для

                 дешифрування  криптограм  в  обох  режимах  —  шифрування-
                 дешифрування і підтвердження цифрового підпису.
                               Основна  частина  модуля  (рядки  9-12)  –  це,  як  і  раніше,

                 цикл  піднесення до степеня за модулем, що виконується для кожної
                 трійки  символів,  послідовно вибраних  з  криптограми  (кожна  з цих
                 трійок  представляє  окремий  символ  відповідно  до  коду  ASCII).  У

                 циклі кожна трійка спочатку перетворюється в число за допомогою
                 убудованої  функції  10  BASE2DEC  (у  другому  аргументі  функції
                 вказано  10,  що  означає  читання  десяткового  рядка).  Слідом

                 застосовується функція  11 INVOLUTION, яка повертає елемент у(i)
                 масиву десяткових чисел у.
                        Оскільки  програма  виконує  шифрування  та  дешифрування  в
                 одному  файлі,  криптограму  не  потрібно  уводити.  Після  закінчення

                 роботи модуля ENCRYPT вона є  значенням рядкової змінної CRYPT.
                 Підготовка  циклу  полягає  у  формуванні  з  суцільного  цифрового
                 рядка  криптограми  окремих  порцій  по  три  символи  у  кожній.  Це

                 можна  здійснити  за  допомогою  функції  RESHAPE  (рядок  7),  яка
                 рядкову матрицю  CRYPT перетворює на рядкову матрицю розміром
                 3хl, де l — довжина рядка  CRYPT, поділена на 3. Транспонування
                 останньої матриці (рядок 8) дає зручну lx3 матрицю CRY, 3-значні

                 рядки  якої  cry(i,:)  є  першим  аргументом      BASE2DEC  у  циклі.
                 Довжина l визначається  у рядку 5.
                        При роботі циклу визначаються всі елементи масиву у, і після

                 застосування  оператора  CHAR  масив  може  бути  виведений  за
                 допомогою функції DISP (рядок 21) як розшифрований явний текст.
                 Але  спочатку  потрібно  вивести  заголовки,  які  будуть  різними  для

                 різних  режимів.  Вивід  заголовків  (рядки  13-20),  як  і  раніше,
                 здійснюється за допомогою оператора вибору SWITCH у залежності


                                                              28
   23   24   25   26   27   28   29   30   31   32   33