web-dev-qa-db-fra.com

Comment trouver d, étant donné p, q et e dans RSA?

Je sais que je dois utiliser algorithme euclidien étend , mais je ne sais pas exactement quels calculs je dois faire. J'ai des nombres énormes. Merci

12
user1816690

Eh bien, d est choisi de telle sorte que d * e == 1 modulo (p-1)(q-1), vous pouvez donc utiliser algorithme euclidien pour cela ( trouver l'inverse multiplicatif modulaire ) .

Si vous n'êtes pas intéressé à comprendre l'algorithme, vous pouvez simplement appeler BigInteger # modInverse directement.

 d = e.modInverse(p_1.multiply(q_1))
13
Thilo

Étant donné que, p = 11, q = 7, e = 17, n = 77, φ (n) = 60 et d =?

Premières valeurs de substitution de la formule: -

ed mod φ (n) = 1

17 d mod 60 = 1

L'étape suivante: - prenez le total de n, qui est 60 à votre gauche et [e] à votre droite.

60 = 17

3ème étape: - demandez combien de fois 17 va à 60. C'est 3,5… .. Ignorez le reste et prenez 3.

60 = 3 (17)

Étape 4: - maintenant vous devez équilibrer cette équation 60 = 3(17) de telle sorte que le côté gauche est égal au côté droit. Comment?

60 = 3(17) + 9 <== si vous multipliez 3 par 17, vous obtenez 51 puis plus 9, soit 60. Ce qui signifie que les deux côtés sont maintenant égaux.

Étape 5: - Prenez maintenant 17 sur votre gauche et 9 sur votre droite.

17 = 9

Étape 6: - demandez combien de fois 9 passe à 17. C'est 1,8 …….

17 = 1 (9)

Étape 7: - Étape 4: - maintenant vous devez équilibrer ce 17 = 1 (9)

17 = 1(9) + 8 <== si vous multipliez 1 par 9, vous obtenez 9 puis plus 8, soit 17. Ce qui signifie que les deux côtés sont maintenant égaux.

Étape 8: - prenez à nouveau 9 sur votre gauche et 8 sur votre droite.

9 = 1 (8)

9 = 1(8) + 1 <== une fois que vous avez atteint +1 pour équilibrer votre équation, vous pouvez arrêter et recommencer la substitution.

Étape A: -Dernière équation à l'étape 8 qui est 9 = 1(8) + 1 peut être écrit comme suit: 1. = 9 - 1 (8)

Étape B: -Nous savons ce qu'est (8) en disant simplement 8 = 17 - 1(9) de l'étape 7. Maintenant, nous pouvons réécrire l'étape A comme: -

1 = 9 -1 (17 - 1(9)) <== ici puisque 9 = 1 (9) nous pouvons réécrire comme: -

1 = 1 (9) -1 (17) +1 (9) <== regrouper les termes similaires. Dans ce cas, vous ajoutez 1(9) avec 1(9) - soit 2 (9).

1 = 2 (9) -1 (17)

Étape C: - Nous savons ce qu'est (9) en disant simplement 9 = 60 - 3(17) de l'étape 4. Maintenant, nous pouvons réécrire l'étape B comme: -

1 = 2 (60-3 (17) -1 (17)

1 = 2 (60) -6 (17) -1 (17) <== regrouper les termes similaires. Dans ce cas, vous ajoutez 6(17) avec 1(17) - soit 7 (17).

1 = 2 (60) -7 (17) <== à ce stade, nous pouvons arrêter, rien de plus à substituer, donc prenez la valeur suivante 17. Soit 7. Soustrayez-la avec le totient.

60-7 = d

Alors donc la valeur de d = 53.

12

Je veux juste augmenter le réponse de Sidudozo et clarifier certains points importants.

Tout d'abord, que devons-nous passer à Extended Euclidean Algorthim pour calculer d?

N'oubliez pas que ed mod φ(n) = 1 et cgd(e, φ(n)) = 1.

Sachant que l'Algorthim euclidien étendu est basé sur la formule cgd(a,b) = as + bt, donc cgd(e, φ(n)) = es + φ(n)t = 1, où d doit être égal à s + φ(n) afin de satisfaire les

ed mod φ(n) = 1 condition.

Donc, étant donné le e=17 Et φ(n)=60 (emprunté à réponse de Sidudozo ), nous substituons les valeurs correspondantes dans la formule mentionnée ci-dessus: cgd(e, φ(n)) = es + φ(n)t = 117s + 60t = 1.

À la fin du réponse de Sidudozo nous obtenons s = -7. Ainsi d = s + φ(n)d = -7 + 60d = 53.

Vérifions les résultats. La condition était ed mod φ(n) = 1.

Regardez 17 * 53 mod 60 = 1 . Correct!

1
AndreyWD