|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Пример выполнения Задания3Алгоритм Диффи-Хеллмана Открытый элемент Р задан в таблице 3 – графа 2. Найти примитивный элемент поля. Считая, что секретный ключ каждого участника равен номеру студента в списке группы i, вычислить ключ обмена для участника с номером 35 – i по алгоритму Диффи-Хэллмана.
Вариант № 7, группа 2091 (№ 1) Номер в списке группы i = 7 Номер группы k = 1 P = 43
Открытый элемент P = 43. Найти примитивный элемент поля. Секретный ключ каждого участника i = 7, вычислить ключ обмена для участника с номером 35.
GF(43) = <0, 1, 2, 3, …, 40, 41, 42> Найдем примитивный элемент поля GF(43).
Требуется найти такое число, принадлежащее интервалу [2,42], которое при возведении в 42-ю степень по модулю 43 будет давать в результате единицу. Если же единица будет получена раньше, чем при возведении в 42-ю степень, результаты возведения в степень начнут повторяться, и через выбранный элемент не удастся представить все элементы поля. Исходя из таких соображений, получаем несложный алгоритм нахождения примитивных элементов поля GF(43). Алгоритм нахождения примитивных элементов поля GF(43).
int _tmain(int argc, _TCHAR* argv[]) { long int mem, i, j, num, deg, modul, res; unsigned char mas[44]; deg = 0; modul = 43; mem = 2; while (mem < 42) { num = mem; deg = 0; while (deg!= 42) { res = 1; deg = 0; for (i = 0; i < 42; i++) mas[i] = 0; do { res = res*num; res = res % modul; deg++; mas[deg] = res; } while(res!= 1); num++; } std::cout << num-1 << std::endl; for (i = 0; i < 42; i++) { for (j = 0; j < 42; j++) { if ((i!= j) && (mas[j] == mas[i])) std::cout << "Wrong" << std::endl; } mem = num; } } return 0; }
В результате выполнения программы получим следующие значения: 3, 5, 12, 18, 19, 20, 26, 28, 29, 30, 33, 34
Выберем значение α = 20. Найдем элементы поля.
Секретный ключ участника А: XA = 7. Секретный ключ участника B: YB = 35-7 = 28.
Открытый ключ участника А: Открытый ключ участника B:
15 * 208 = 6
Обменный ключ участника А: Обменный ключ участника B: Значения обменного ключа для А и В совпадают. Обменный ключ: K = 6
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |