Модульная арифметика - PullRequest
       21

Модульная арифметика

0 голосов
/ 11 ноября 2008

Я новичок в криптографии и модульной арифметике. Так что я уверен, что это глупый вопрос, но я ничего не могу поделать.

Как рассчитать a из
pow ( a , q ) = 1 (мод p ),
где p и q известны? Я не получаю часть "1 (мод р )", она равна 1, не так ли? Если так, то о чем "mod p "?
Это так же, как
pow ( a , -q ) (мод p ) = 1?

Ответы [ 2 ]

12 голосов
/ 11 ноября 2008

Часть (mod p) относится не к правой части, а к знаку равенства: она говорит, что по модулю p, pow (a, q) и 1 равны . Например, «по модулю 10, 246126 и 7868726 равны» (и они также равны 6 по модулю 10): два числа x и y равны по модулю p, если они имеют одинаковый остаток при делении на p, или эквивалентно, если p делит xy.

Поскольку вы, похоже, исходите из перспективы программирования, можно сказать, что по-другому pow (a, q)% p = 1, где "%" - это оператор "остатка", реализованный на нескольких языках (при условии, что р> 1).

Вам следует прочитать статью в Википедии о Модульная арифметика , или любую книгу по элементарной теории чисел (или даже книгу по криптографии, так как она может вводить модульную арифметику).

Чтобы ответить на ваш другой вопрос: не существует общей формулы для нахождения такого a (насколько мне известно) в целом. Предполагая, что p простое число, и используя небольшую теорему Ферма , чтобы уменьшить q по модулю p-1, и предполагая, что q делит p-1 (иначе такого a не существует), вы можете произвести такое a , взяв первообразный корень из p и подняв его до степени (p-1) / q. [И вообще, когда p не простое число, вы можете уменьшить q по модулю & phi; (p), а затем предположить, что оно делит & phi; (p), и вы знаете примитивный корень (скажем, r) mod p, вы можете взять r к сила & phi; (p) / q, где & phi; - общая функция - это вытекает из теоремы Эйлера .]

5 голосов
/ 11 ноября 2008

Совсем не глупо, так как это основа для шифрования с открытым ключом. Вы можете найти отличную дискуссию по этому вопросу на http://home.scarlet.be/~ping1339/congr.htm#The-equation-a%3Csup%3Ex.

PKI работает, выбирая p и q, которые являются большими и относительно простыми . Один (скажем, p) становится вашим закрытым ключом, а другой (q) - вашим открытым ключом. Шифрование «нарушено», если злоумышленник угадает p, учитывая aq (зашифрованное сообщение) и q (ваш открытый ключ).

Итак, чтобы ответить на ваш вопрос:

aq = 1 мод p

Это означает, что aq - это число, которое оставляет остаток от 1 при делении на p. Мы не заботимся о целочисленной части частного, поэтому мы можем написать:

aq / p = n + 1 / p

для любое целое значение n. Если мы умножим обе части уравнения на p, мы получим:

aq = np + 1

Для решения a имеем:

a = (np + 1) 1 / q

Последний шаг - найти значение n, которое генерирует исходное значение a. Я не знаю ни одного способа сделать это, кроме проб и ошибок - что равносильно попытке "грубой силы" сломать шифрование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...