Дискретный логарифм метод p-1

Тема в разделе "WASM.CRYPTO", создана пользователем persicum, 24 окт 2009.

  1. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Поясните плиз чайнику на пальцах (именно на пальцах, т.к. литературы разумеется полно и гуглится всего полно) как вычислить дискретный логарифм скажем для p=13, p-1=2*2*3.

    За генератор можно взять 2 или может 7 - в принципе для любого должно работать?
    Короче решить 2^x=b mod 13. Можно составить две таблички соответственно по числу простых делителей в их степенях, т.е. 0..3 и 0..2 и туда подсматривать...

    Чиста конкретна
     
  2. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    В общем, зря я струхнул сразу... После пятого прочтения стало понятно. Наиболее просто и бездоказательно алгоритм изложен в Вики, хороший готовый рецепт... Однако изложение крайне неряшливое, неправильно задан диапазон изменения индексов и местами перепутаны индексы i и j. Так что если кому будет нужна распальцовка на конкретном примере могу запостить в будушем =)))
     
  3. Clear__Energy

    Clear__Energy New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2009
    Сообщения:
    432
    Перепиши :3
     
  4. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Там еще такой жуткий баг:
    вместо -x0 -x1 -x2... следует читать -x0 -x1*q -x2*q^2...

    Короче, мне удалось написать рабочий код =)))
     
  5. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    http://ru.wikipedia.org/wiki/Алгоритм_Полига-Хеллмана
    Тут по русски и без опечаток.
     
  6. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    valterg
    издеваешься? вся моя критика именно на эту грязную статейку
     
  7. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Лан, предвижу возражения, поэтому укажу на ошибки (на мой взгляд). Нужно:

    Шаг 1: Составление таблицы
    j принадлежит 0...q_i-1

    Шаг 2: Рассматриваем сравнение

    (ba^(-x_0-...-x_(j-1)*q_i^(j-1))^ ... = a^(x_j ...

    Конец цикла по j
    Конец цикла по i


    Примерно так =)))
     
  8. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Так зачем здесь - надо прямо на вики исправлять.
     
  9. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Прикольный я метод извлечения квадратных корней придумал.. Нужно найти дискретный логарифм и разделить его на два, а если логарифм нечетный и не делится на два, значит число суть квадратичный невычет. Так все просто