Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

реализация алгоритма Diffie-Hellman

30K
27 октября 2008 года
ackii_3aya
16 / / 07.03.2008
кто не слышал про этот алгоритм:
http://ru.wikipedia.org/wiki/Алгоритм_Диффи_—_Хеллмана
Реализовать сам принцип генерации ключа не так сложно, вот накидал код на питоне:
Код:
# -*- coding: utf-8 -*-

import random
if __name__ == "__main__":
    p = 23;
    g = 5;
    print "p =", p, "g =", g;
    A = random.randint(10**4,10**5-1);
    print "Alice A =", A;
    send2bob = g**A % p;
    print "Alice send Bob g^A mod p =", send2bob;
    B = random.randint(10**4,10**5-1);
    print "Bob B =", B;
    send2alice =  g**B % p;
    print "Bob send Alice g^B mod p =", send2alice;
    print "Alice calc K =", send2alice**A % p;
    print "Bob calc K =", send2bob**B % p;

Вопрос как генерировать p и g. если верить викам то p должно быть порядка 10**300 (простым или почти простым ибо найти такое простое число сегодня даже с супер компьютерами не реально), a и b 10*100. и вычисления g**a и g**b слишком долгим выходит.
как решить эти проблемы.
имхо реализовывать это на си или питоне не так влияет тут на производительность, ибо подождать секунду или 10 секунд не принципиально.
А ждать сутки или 10 суток не уже не допустимо=)
240
28 октября 2008 года
aks
2.5K / / 14.07.2006
ну нужно реализовать логику работы с болшими числами (те которые абсолютно не влазят в стандартные типы), представлять их массивами например и плюс генератор для них. Иначе никак. Вычисление степень тоже нужно не влоб умножая ))
Если не хотите реализовывать большие числа - можно взять готовые. например в OpenSSL есть подбиблиотечка для работы с большими числами (BIGNUM) и в том числе и генератор простых, взаимнопростых числе для них.
30K
29 октября 2008 года
ackii_3aya
16 / / 07.03.2008
Благодарствую за ответ. Хотелось бы узнать как реализуются эти алгоритмы. И самому реализовать. Но возится в исходниках OpenSSL требует слишком много времени, а его у меня нет. Попробую либу BIGNUM
240
30 октября 2008 года
aks
2.5K / / 14.07.2006
http://algolist.manual.ru/maths/longnum.php
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог