В шифровании RSA как найти d, учитывая p, q, e и c?
Я знаю, что мне нужно использовать расширенный алгоритм Евклида, но я не уверен, какие именно вычисления мне нужно сделать. У меня их огромное количество. Спасибо
3 ответов
Ну d
выбирается такой, чтобы d * e == 1 modulo (p-1)(q-1)
, Так что вы можете использовать алгоритм Евклида для этого (найти модульные перемножительная).
Если вы не заинтересованы в понимании алгоритма, вы можете просто позвонить BigInteger#modInverse напрямую.
d = e.modInverse(p_1.multiply(q_1))
учитывая, что p=11, q=7, e =17, n=77, φ (n) = 60 и d=?
сначала подставьте значения из Формулы: -
ed mod φ (n) =1
17 д мода 60 = 1
следующий шаг: - возьмите тотиент n, который равен 60 с левой стороны и [e] с правой стороны.
60 = 17
3-й шаг: - спросите, сколько раз 17 идет к 60. То есть 3,5..... Проигнорируйте остаток и возьмите 3.
60 = 3(17)
Шаг 4: Теперь вам нужно, чтобы сбалансировать это уравнение 60 = 3(17) так, чтобы левая сторона равна правой стороны. Как?
60 = 3(17) + 9
Шаг 5: - Теперь возьмите 17 в левую сторону и 9 в правую сторону.
17 = 9
Шаг 6:- спросите, сколько раз 9 переходит в 17. Это 1.8.......
17 = 1(9)
Шаг 7: - Шаг 4: - Теперь вам нужно сбалансировать это 17 = 1 (9)
17 = 1(9) + 8
Шаг 8: - снова возьмите 9 в левую сторону и 8 в правую сторону.
9 = 1(8)
9 = 1(8) + 1
шаг A: - последнее уравнение в шаге 8, которое равно 9 = 1(8) + 1, можно записать следующим образом: 1.= 9 – 1(8)
шаг B: - мы знаем, что такое (8), просто сказав 8 = 17 – 1(9) из шага 7. Теперь мы можем переписать шаг как:-
1=9 -1(17 – 1(9))
1=1(9)-1(17) +1(9)
1=2(9)-1(17)
шаг C: – мы знаем, что такое (9), просто сказав 9 = 60-3(17) из шага 4. Теперь мы можем переписать шаг B как: -
1=2(60-3(17) -1(17)
1=2(60)-6(17) -1(17)
1=2(60)-7(17)
60-7=d
тогда, следовательно, значение d= 53.
я просто хочу увеличить Sidudozo это и прояснить некоторые важные моменты.
в первую очередь, что мы должны пройти в расширенном евклидовом Algorthim для вычисления d
?
помните, что ed mod φ(n) = 1
и cgd(e, φ(n)) = 1
.
зная, что в расширенном евклидовом Algorthim определяется по формуле cgd(a,b) = as + bt
, следовательно,cgd(e, φ(n)) = es + φ(n)t = 1
, где d
должно быть равно s + φ(n)
для того, чтобы удовлетворить
ed mod φ(n) = 1
состояние.
Итак, учитывая e=17
и φ(n)=60
(заимствовано из Sidudozo это), мы подставляем соответствующие значения в Формулу, указанную выше:
cgd(e, φ(n)) = es + φ(n)t = 1
⇔ 17s + 60t = 1
.
в конце Sidudozo это получаем s = -7
. Таким образом d = s + φ(n)
⇔ d = -7 + 60
⇒ d = 53
.
давайте проверим результаты. Условие ed mod φ(n) = 1
.
посмотреть 17 * 53 mod 60 = 1. Правильно!