Полный генератор

Тема в разделе "WASM.A&O", создана пользователем persicum, 7 янв 2010.

  1. persicum

    persicum New Member

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

    Пример, 3^18 = 1 mod 19, и не равно 1 при любой меньшей степени.
    Другой, 5^9 = 1 mod 19, поэтому 5 это дрянь, а 3 - генератор.

    Как отыскать генератор и гарантировать его свойства в большом поле, скажем 64 бит или даже криптографического размера 2048 бит, где полный перебор не возможен?
     
  2. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Нутром чую, Петька, а доказать не могу...
    Берем p-1, раскладываем на множители...
    Возводим пробное число a_ во всевозможные выборки множителей из разложения.
    Если единицы не возникает кроме как для p-1, то это генератор.
     
  3. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Если это так, то круто получается!
    Вместо 2^Nбит нужно перебрать только 2^Nмнож, в моем случае число множителей равно семь.
     
  4. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Еще более быстрый способ придумал!
    Если число является свидетелем простоты в тесте рабина миллера то оно будет полным генератором.
     
  5. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Не, с тестом рабина не работает, например 8^9 = -1 mod 19, но 8 это лишь генератор периода шесть. Остается только с разложением p-1 и взятием булиана по всем множителям.
     
  6. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Число g порождает группу ненулевых элементов по модулю простого числа p относительно умножения тогда и только тогда, когда g лежит в этой группе и для всех простых делителей q|p-1 число g^((p-1)/q) не сравнимо с 1 по модулю p.
    Для нахождения примитивных корней просто проверяют все значения g подряд, начиная с 2. В предположении расширенной гипотезы Римана это гарантированно приводит к результату за полиномиальное (по log p) время.
     
  7. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Мда, выходит что перебор по булеану множителей это явный оверкилл...
    Достаточно перебрать множители по штучно, причем кратность можно не учитывать.
    Генераторов должно быть дофига, их число равно функции эйлера от p-1
     
  8. persicum

    persicum New Member

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