Je les valeurs p
, q
, n
et e
et souhaitez calculer la clé privée d
. Comment puis-je faire cela, quelqu'un pourrait-il me donner l'exemple de code C#? J'utilise une classe BigInteger
pour représenter les valeurs pour p
, q
, n
et e
, donc je suppose que d sera également BigInteger
.génération de clé privée RSA en C#
Répondre
Le chemin court est de calculer l'inverse de e modulo (p-1) * (q-1). En fait, vous avez seulement besoin du moins commun multiple de p-1 et q-1, mais cela ne vous achètera pas beaucoup (oui, il y a plusieurs valeurs possibles pour d, c'est normal, ils sont tous équivalents) .
Si votre classe BigInteger
a une méthode inverse modulaire, alors ce sera facile: il suffit de l'appeler. Sinon, vous devrez le calculer vous-même, en utilisant l'algorithme Euclidien étendu (c'est ce que les classes BigInteger
ont tendance à utiliser pour calculer les inverses modulaires).
De Wikipedia:
Déterminer d (en utilisant une arithmétique modulaire) qui satisfait à la relation de congruence
- Autrement dit, ed - 1 peut être également divisée par le indicatrice (p - 1) (q - 1).
- Ceci est souvent calculé en utilisant l'algorithme Euclidien étendu. D est conservé en tant qu'exposant de clé privée.
L'algorithme d'Euclide étendu permet de trouver des nombres entiers tels que ce qui suit est:
L'algorithme d'Euclide étendu est particulièrement utile lorsque a et b sont coprime , puisque x est l'inverse multiplicatif modulaire d'un modulo b.
Dans cette formule définie a
-e
, b
-(p-1)(q-1)
et gcd(a, b)
-1 (parce que e et φ (pq) doivent être dans l'algorithme premiers entre eux RSA) et à résoudre pour x
qui vous donne votre d
. La page Wikipedia sur extended Euclidean algorithm a plus de détails sur la façon d'écrire l'algorithme à résoudre pour x et y. Par exemple, vous pouvez utiliser cette fonction récursive (en pseudo-code):
function extended_gcd(a, b)
if a mod b = 0
return {0, 1}
else
{x, y} := extended_gcd(b, a mod b)
return {y, x-(y*(a div b))}
Dans .NET si vous voulez juste pour générer des clés RSA que vous n'avez pas à mettre en œuvre l'algorithme RSA-vous. Il existe déjà une implémentation de RSA dans le framework .NET que vous pouvez utiliser.
Voilà comment je l'ai fait.
nombres premiers p = 7 et q = 17
Calculer n = p * q = 119
Calculer f (n) = (p-1) * (q-1) = 96
Calculer d = e^-1 mod f (n), par exemple, D = 77
- 1. Cryptage avec une clé privée RSA en Java
- 2. Ouverture d'une clé privée RSA à partir de Ruby
- 3. Comment charger la clé privée RSA à partir du fichier
- 4. Comment générer une clé publique et privée unique via RSA
- 5. dans la conversion rsa clé privée descriper dans symbian
- 6. RSA: Comment générer une clé privée dans Java et l'utiliser en C#?
- 7. Chargement d'une clé privée RSA de la mémoire en utilisant libxmlsec
- 8. RSA décrypter avec Java
- 9. La clé privée RSA contient-elle toujours la clé publique ou est-ce simplement .NET?
- 10. RSA exportation clé publique
- 11. Utilisation de RSA en Python
- 12. RSA iphone clé publique
- 13. Lecture de la clé privée au format PEM avec LockBox
- 14. données Décrypter en utilisant une clé publique RSA
- 15. Sécurisation d'une clé de licence avec la clé RSA
- 16. Comment lire une clé privée du fichier pvk en C#?
- 17. Comment puis-je importer une clé privée RSA dans un RSACryptoServiceProvider?
- 18. Extraction de la clé publique de la clé privée dans OpenSSL
- 19. RSA clé de chiffrement/déchiffrement problème
- 20. Comment générer une clé publique/privée RSA dans .Net, d'une longueur spécifique?
- 21. Utilisation d'une clé publique/privée RSA précédemment générée avec le framework .net
- 22. Signature d'une chaîne avec clé privée RSA sur Google App Engine Python SDK
- 23. Comment décrypter un fichier de clé privée et signer du texte en utilisant des appels openssl en C?
- 24. C# RSA Decryption issue
- 25. Implémenter un algorithme RSA en Java
- 26. Longueur de clé RSA et limitations d'exportation
- 27. Comment utiliser la clé privée
- 28. Comment stocker une clé publique dans un conteneur de clé RSA au niveau de la machine
- 29. Obtenir la clé privée du certificat BouncyCastle X509? C#
- 30. n'a pas de paire certificat/clé privée
Je sais comment générer des clés à partir de zéro, mais par curiosité j'essaie de récupérer d des valeurs ci-dessus. – b3n