Смекни!
smekni.com

Лисп-реализация алгоритма кодирования информации RSA (стр. 2 из 2)

Рисунок 4 – Функциональная модель решения задачи для функции RSA


Рисунок 5 – Блок-схема решения задачи для функции DISTINCT_SIMPLE_NUM


Рисунок 6 – Блок-схема решения задачи для функции ALG_ EUCLID

4. Программная реализация решения задачи

; ПОИСК ВЗАИМНО ПРОСТОГО ЧИСЛА

(DEFUNDISTINCT_SIMPLE_NUM(NUMPH)

(DO

()

((< NUM PH) NUM)

; TRUNCATE – ЦЕЛОЧИСЛЕННОЕ ДЕЛЕНИЕ

(SETQNUM (TRUNCATENUM 2))

)

(DO

()

; GCD – НАИБОЛЬШИЙ ОБЩИЙ ДЕЛИТЕЛЬ

((EQL (GCDNUMPH) 1) NUM)

; REM– ОСТАТОК ОТ ДЕЛЕНИЯ

(IF (EQL (REMNUM 2) 0) (SETQNUM (+NUM 1)))

(SETQ NUM (+ NUM 2))

)

)

; ГЕНЕРИРУЕМ СЛУЧАЙНОЕ ПРОСТОЕ ЧИСЛО

(DEFUNSIMPLE_NUMBER ()

; ОБЪЯВЛЕНИЕПЕРЕМЕННОЙ

(DECLARE (SPECIAL LST))

; СПИСОК ПРОСТЫХ ЧИСЕЛ

(SETQ LST ' (2 3 5 7 11 13 17 19 23 31 37 41 43 47 53 61 67 71 73 79 83 89 97 101))

; ВЫБИРАЕМ СЛУЧАЙНОЕ ЧИСЛО ИЗ СПСКА

(NTH (RANDOM ( (LENGTH LST) 1)) LST)

)

; РАСШИРЕННЫЙ АЛГОРИТМ ЕВКЛИДА

(DEFUNALG_EUCLID (X Y)

; – ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ–

(DECLARE (SPECIAL I))

(DECLARE (SPECIAL I0))

(DECLARE (SPECIAL I1))

(DECLARE (SPECIAL J0))

(DECLARE (SPECIAL J1))

(DECLARE (SPECIAL R))

(DECLARE (SPECIAL L))

;–

(IF (EQL X 1) (SETQ X (+ X Y))

; ИНАЧЕ

(PROGN

(SETQ I0 0)

(SETQ I1 1)

(SETQ L Y)

(SETQ R (REM L X))

(SETQ J0 (TRUNCATE L X))

(SETQ L X)

(SETQ X R)

(SETQ R (REM L X))

(SETQ J1 (TRUNCATE L X))

(SETQ L X)

(SETQ X R)

(DO

(())

((<= R 0) R)

(SETQ R (REM L X))

(SETQ I ( I0 (* I1 J0)))

(IF (< I 0) (SETQ I (- Y (REM (* -1 I) Y))) (SETQ I (REM I Y)))

(SETQ I0 I1)

(SETQ I1 I)

(SETQ J0 J1)

(SETQ J1 (TRUNCATE L X))

(SETQ L X)

(SETQ X R)

)

(SETQ I ( I0 (* I1 J0)))

(IF (< I 0) (SETQ I (FLOOR (- Y (REM (* -1 I) Y)))) (SETQ I (FLOOR (REM I Y))))

I

)

)

)

; РЕАЛИЗАЦИЯ АЛГОРИТМА RSA

(DEFUNRSA ()

; – ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ–

(DECLARE (SPECIAL N))

(DECLARE (SPECIAL E))

(DECLARE (SPECIAL PHI))

(DECLARE (SPECIAL PRIVATE_KEY))

(DECLARE (SPECIAL P))

(DECLARE (SPECIAL Q))

;

; ВЫБИРАЮТСЯ ДВА ПРОСТЫХ ЧИСЛА

(SETQ P (SIMPLE_NUMBER))

(SETQ Q (SIMPLE_NUMBER))

; ВЫЧИСЛЯЕМ ИХ ПРОИЗВЕДЕНИЕ

(SETQ N (* P Q))

; НАХОДИМ PHI = (P-1) (Q-1)

(SETQ PHI (* (- P 1) (- Q 1)))

; ВЫБИРАЕМ ПРОИЗВОЛЬНОЕ ЧИСЛО

(SETQ E (RANDOM 10000000000000000))

; НАХОДИМ ВЗАИМНОЕ ПРОСТОЕ E С PHI

(SETQE (DISTINCT_SIMPLE_NUMEPHI))

; НАХОДИМ ЗАКРЫТЫЙ КЛЮЧ PRIVATE_KEY

(SETQPRIVATE_KEY (ALG_EUCLIDEPHI))

(LISTENPRIVATE_KEY)

)

; ПОЛУЧАЕМ КЛЮЧИ

(SETQLIST_KEY (RSA))

(SETQ E (CAR LIST_KEY))

(SETQ N (CADR LIST_KEY))

(SETQ D (CADDR LIST_KEY))

; ШИФРОВАНИЕ ЧИСЛА

(DEFUNCODING (NUM)

(MOD (EXPT NUM E) N)

)

; ДЕШИФРОВАНИЕ ЧИСЛА

(DEFUNDECODING (NUM)

(MOD (EXPT NUM D) N)

)

; ПОЛУЧАЕМСООБЩЕНИЕ

(SETQ TEXT 0)

(SETQ INPUT (OPEN«D:&bsol;MESSAGE.TXT»:DIRECTION:INPUT))

(SETQ TEXT (READ INPUT))

(CLOSE INPUT)

; ШИФРУЕМСООБЩЕНИЕ

(SETQ OUTPUT (OPEN«D:&bsol;CODING.TXT»:DIRECTION:OUTPUT))

(SETQ CODING_TEXT (MAPCAR 'CODING TEXT))

(PRINT (LIST 'CODING_TEXT CODING_TEXT) OUTPUT)

(PRINT (LIST 'PUBLIC_KEY (LIST E N)) OUTPUT)

(TERPRI OUTPUT)

(CLOSE OUTPUT)

; ДЕШИФРУЕМСООБЩЕНИЕ

(SETQ OUTPUT (OPEN«D:&bsol;DECODING.TXT»:DIRECTION:OUTPUT))

(SETQ DECODING_TEXT (MAPCAR 'DECODING CODING_TEXT))

(PRINT (LIST 'DECODING_TEXT DECODING_TEXT) OUTPUT)

(TERPRI OUTPUT)

(CLOSE OUTPUT)

5. Пример выполнения программы

Пример 1

Рисунок 7. Переданное сообщение

Рисунок 8. Зашифрованное сообщение

Рисунок 9. Расшифрованное сообщение

Пример 2

Рисунок 10. Переданное сообщение


Рисунок 11. Зашифрованное сообщение

Рисунок 12. Расшифрованное сообщение

Пример 3

Рисунок 13. Переданное сообщение

Рисунок 14. Зашифрованное сообщение

Рисунок 15. Расшифрованное сообщение

Заключение

Криптосистема RSA используется в самых различных продуктах, на различных платформах и во многих отраслях. В настоящее время криптосистема RSA встраивается во многие коммерческие продукты, число которых постоянно увеличивается. Также ее используют операционные системы Microsoft, Apple, Sun и Novell. В аппаратном исполнении RSA алгоритм применяется в защищенных телефонах, на сетевых платах Ethernet, на смарт-картах, широко используется в криптографическом оборудовании THALES (Racal). Кроме того, алгоритм входит в состав всех основных протоколов для защищенных коммуникаций Internet, в том числе S/MIME, SSL и S/WAN, а также используется во многих учреждениях, например, в правительственных службах, в большинстве корпораций, в государственных лабораториях и университетах. На осень 2000 года технологии с применением алгоритма RSA были лицензированы более чем 700 компаниями.

Итогом работы можно считать созданную функциональную модель алгоритма кодирования информации RSA. Данная модель применима к положительным целым числам.

Созданная функциональная модель и ее программная реализация могут служить органической частью решения более сложных задач.

Список использованных источников и литературы

1. Венбо Мао. Современная криптография: теория и практика. [Электронный ресурс] / Венбо Мао. – М.: Вильямс, 2005. С. 768.

2. Кландер, Л. HackerProf: полное руководство по безопасности компьютера. [Электронный ресурс] / Л. Кландер – М.: Попурри, 2002. С. 642.

3. Фергюсон, Н. Практическая криптография. [Текст] / Н. Фергюсон, Б. Шнайер. – М.: Диалектика, 2004. С. 432.

4. Шнайер, Б. Прикладная криптография. Протоколы, алгоритмы. [Текст] / Б. Шнайер. – М.: Триумф, 2002. С. 816