Добавил:
Да поможет вам Котельников Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая / Распределение ключей по алгоритму Диффи Хелмана в рассширенных полях Галуа абонент C.docx
Скачиваний:
23
Добавлен:
23.06.2024
Размер:
794.36 Кб
Скачать

Приложение 2

.SECTION/DM vars;

//-Переменные для обработки сигнала-//

.var t;

.var g = 1234; //Входной ключ

.var k;

.var z = 62023;

.var n = 40977;

.var sd;

.var otvet;

.var/circ bank[16];

//----------------------------------//

.SECTION/PM varsp;

.SECTION/PM program;

jump def; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

//----------------Подпрограмма обработки информации-----------//

//Генерация ключей по алгоритму Диффи-Хелмана в расширенных полях Галуа

//-----------------------------------------------------------//

def:

ena m_mode;

dis ar_sat;

//Возведение сообщения в степень z

ax0 = dm(g);

dm(t) = ax0;

ax0 = dm(z);

dm(k) = ax0;

call stepen;

dm(otvet) = ar;

rts;

//----------------------------------------------------------------//

// Банк степеней

//----------------------------------------------------------------//

stepen:

I0 = bank;

L0 = length(bank);

m1 = 1;

ar = dm(t);

mr0 = dm(t);

dm(I0,m1) = ar;

cntr = 15;

do ms until ce;

call umn;

dm(I0,m1) = ar;

ms: mr0 = ar;

ax0 = dm(k);

sr0 = 1;

dm(sd) = sr0;

se = 1;

mr0 = 1;

dm(otvet) = mr0;

ar = 1;

cntr = 16;

do p1 until ce;

ar = dm(I0,m1);

mr0 = dm(otvet);

ay0 = dm(sd);

none = ax0 and ay0;

if ne call umn;

sr0 = dm(sd);

sr = lshift sr0(lo);

dm(sd) = sr0;

p1: nop;

rts;

//----------------------------------------------------------------//

// Умножение в расширенных полях Галуа

//----------------------------------------------------------------//

umn:

ay0 = 0;

se = 1;

af = pass ay0;

ay1 = dm(n);

sr0 = 1;

se = 1;

ay0 = sr0;

none = mr0 and ay0;

if NE af = pass ar;

CNTR = 15;

do cicle until CE;

sr = lshift sr0 (lo),

ay0 = ar;

ar = ar + ay0;

ay0 = sr0;

if ac ar = ar xor ay1;

none = mr0 and ay0;

cicle: if ne af = ar xor af;

ar = pass af;

dm(otvet) = ar;

RTS;

Соседние файлы в папке Курсовая