Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.76/37: Рейтинг темы: голосов - 37, средняя оценка - 4.76
Mis
3 / 3 / 0
Регистрация: 21.06.2011
Сообщений: 8
1

Диффи-Хеллман

28.04.2013, 01:22. Просмотров 7211. Ответов 3
Метки нет (Все метки)

Пытаюсь сделать алгоритм Диффи-Хеллмана.
Пока сделал генерацию случайного простого числа.
Застрял на следующем шаге: не могу понять алгоритм, как находить первообразный корень по модулю этого простого числа?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2013, 01:22
Ответы с готовыми решениями:

Протокол Диффи-Хеллмана
Решил реализовать передачу ключа по протоколу ДХ, вот исходник: static void...

Алгоритм Диффи-Хелмана для 4-х абонентов
Требуется реализовать алгоритм Диффи-Хеллмана для четырех абонентов.

Алгоритм Диффи — Хеллмана програмная реализацыя
(Прошу прощения за корявый русский) помогите з реализацией етого алгоритма)...

Алгоритм Диффи-Хеллмана
необходимо реализовать алгоритм Диффи-Хеллмана на перл

Группы Диффи-Хеллмана
Добрый день! Встретил такую формулировку "Diffie-Hellman groups" или еще такую...

3
Psilon
Master of Orion
Эксперт .NET
6013 / 4866 / 902
Регистрация: 10.07.2011
Сообщений: 14,477
Записей в блоге: 5
Завершенные тесты: 4
28.04.2013, 07:15 2
Mis, гуглить теорию всем лень, если нужна помощь, давайте готовый алгоритм. А то я тоже могу спросить "ааа, помогите решить задачу методом деформируемого симплекса!!!" или "ААА, нужно оптимизировать методом розенброка"... Если вместо этого скинуть: метод розенброка, выполняем покоординатный спуск методом дихотомии, вот он у меня, после этого преобразуем координаты вот по такой формуле, после этого продолжаем и возвращаемся на п.1 до тех пор, пока норма разностного вектора не достигнет нужной точности". Это уже конструктивно и может быть закодировано.
0
Mis
3 / 3 / 0
Регистрация: 21.06.2011
Сообщений: 8
28.04.2013, 22:46  [ТС] 3
Нашел самое понятное объяснение алгоритма:
Надо в цикле перебрать все остатки деления g^i / p, и запоминать их. Если в полученном ряду есть все числа от 1 до p - 1, то g - есть первообразный корень по модулю p.
0
Psilon
Master of Orion
Эксперт .NET
6013 / 4866 / 902
Регистрация: 10.07.2011
Сообщений: 14,477
Записей в блоге: 5
Завершенные тесты: 4
29.04.2013, 10:42 4
Mis,
вроде так накидал (в правильности не уверен)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
using System;
using System.Collections.Generic;
 
namespace ConsoleApplication36
{
    class Program
    {
        static void Main()
        {
            var root = GetPRoot(7);
            Console.WriteLine(root);
            Console.WriteLine(IsPRoot(7,3));
            Console.ReadKey();
        }
 
        static long? GetPRoot(long p)
        {
            for (long i = 0; i < p; i++)
                if (IsPRoot(p, i))
                    return i;
            return null;
        }
 
        static bool IsPRoot(long p, long a)
        {
            if (a == 0 || a == 1)
               return false;
            long last = 1;
            var set = new HashSet<long>();
            for (long i = 0; i < p - 1; i++)
            {
                last = (last*a)%p;
                if (set.Contains(last)) // Если повтор
                    return false;
                set.Add(last);
            }
            return true;
        }
    }
}
Добавлено через 2 минуты
алгоритм нашел тут (могли бы и сами поискать): http://otvetyТОЧКАgoogleТОЧКАru/otvety/thread?tid=1d090356f55735ea
Алгоритм нахождения первообразных корней.

Пусть имеем множество Z(р)
1. Берем очередной элемент a (не равный 0 или 1).

2. Использую таблицу умножения строим мультипликативную последовательность (возводим его последовательно в степень
(a^t)mod p, где t=0,1...,p-2) причем для упрощения вычислений помогает свойство:
a^n = ( a^(n-1) * a )mod p, где a^(n-1) - предыдущий член мультипликативной последовательности.

3. Если в построенной последовательности повторов нет, то а - первообразный элемент.
4. Повторяем шаги 1-3 для всех элементов, вплоть до p-1 включительно.
Добавлено через 10 часов 57 минут
Исправил
4
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2013, 10:42

Простейший алгоритм Диффи-Хеллмана
Пробую совсем просто, без заморочек, написать алгоритм ДХ, но в результате...

Запустить исходник Диффи-Хеллмана
вот код реализации диффи хеллмана,но я не могу запустить ее: помогите...

Алгоритм Диффи-Хеллмана на эллиптических кривых
Здравствуйте , не поможете разобраться с алгоритмом Диффи-Хелмана на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru