Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Генерация закрытого ключа RSA |
Автор: CMD 22.8.2006, 01:54 |
Не понимаю как делать сабж. В описаниях алгоритма RSA обычно пишут : "Закрытый ключ d вычисляется из условия ed mod (p-1) (q-1)=1" или ссылаются на расширеный алгоритм Эвклида. Вот пример из книги Брюса Шнайера: p=47; q=71; n=3337; e=79; Как у него с помощью расширенного алгоритма Эвклида получилось d=1019 - неврубаюсь. Алгоритм Эвклида пытался понять, но не получается, помогите пожалуйста разобраться. |
Автор: Kuvaldis 22.8.2006, 03:20 | ||||
CMD,
Вот вариант лекции по алгебре славного БГУИР (проще я, често говоря, не видел)
Если что, справшивай (ну, и гуглом пользуйся ![]() |
Автор: CMD 22.8.2006, 15:43 |
А можно пару простых наглядных примеров с числами? ![]() |
Автор: Kuvaldis 22.8.2006, 21:04 |
http://www.krugosvet.ru/articles/15/1001515/1001515a9.htm посмотри |
Автор: CMD 22.8.2006, 23:59 | ||||
Алгоритм Эвклида я понял, даже функцию сделал:
но меня интересует именно расширеный алгоритм :
P.S. Не надо на меня смотреть как на идиота, я ещё только 1 курс техникума закончил... ![]() ![]() |
Автор: Kuvaldis 23.8.2006, 01:13 | ||||
CMD,
Извини, начал с простого, думал, ты этого не понимаешь. Тогда усаживайся поудобней и слушай сагу ![]() Из алгоритма Евклида можно вывести следующее свойство НОД (наибольший общий делитель) : Если D = НОД(А, В) но D можно представить в виде D = А * К + В * Т где К, Т - целые числа Отсюда критерий взаимной простоты 2-х чисел: 1 = А * К + В * Т // D = 1 В общем случае коэффициенты К, Т находятся из алгоритма следующим образом (что и является конструктивным доказательством данного утверждения): Пусть А = 1001. В = 390 Найдем их НОД 1001 = 390 * 2 + 221 (1) 390 = 221 * 1 + 169 (2) 221 = 169 * 1 + 52 (3) 169 = 3 * 52 + 13 (4) 52 = 13 * 4 Так как последний отличный от нуля остаток равен 13, то НОД = 13 А теперь, как рекурсивный подъем, делаем вуаля: из (4): НОД = 169 + 52 * (-3) из (3): 52 = 221 + 169 * (-1) Отсюда: НОД = 169 + (221 + 169 * (-1)) * (-3) = 221 * (-3) + 169 * 4 из (2): 169 = В + 221 * (-1) Отсюда НОД = 221 * (-3) + (В + 221 * (-1)) * 4 = В * 4 + 221 * (-7) из (1): 221 = А + В * (-2) Отсюда НОД = В * 4 + (А + В * (-2)) * (-7) = А * (-7) + В * 18 Т.е. К = -7, Т = 18
В твоем случае НОД = 1, А = е, В = (p-1)(q-1) d = К, y = Т. Дальше вроде понятно (см. выше) ![]() |
Автор: Kuvaldis 24.8.2006, 16:29 | ||
CMD, Вот рекурсивный алгоритм решения
|
Автор: CMD 29.8.2006, 23:00 |
Спасибо Kuvaldis! Вопрос исчерпан. |