Obtenir la clé publique de privé en Java
Je me souviens de ce faire il y a longtemps avec OpenSSL, mais je veux savoir si c'est possible, et comment, je n'ai jamais utilisé le chiffrement sur java.
Voir stackoverflow.com/questions/11345346/... et au-dessous de la réponse basée sur la réponse à cette question.
OriginalL'auteur BRabbit27 | 2011-12-08
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas générer des clés directement à partir de l'autre. C'est mathématiquement impossible. Si vous avez eu une clé de blob qui contenait les deux les clés publique et privée, vous pouvez extraire l'un d'eux avec une relative facilité.
MODIFIER, 2017: de Nombreuses années et une bien meilleure compréhension de la crypto plus tard, et il est maintenant clair pour moi que cette réponse n'est pas vraiment correct.
Pour citer Wikipédia:
Le public module n peut être calculée comme suit: p × q. La seule chose qui manque à partir d'un raw, la clé privée est e, mais cette valeur est généralement choisi comme 65537, et si pas, vous pouvez toujours calculer e de d et λ(n).
Cependant, beaucoup de stockage de la clé privée formats de contenir le public module n côtés des autres composants, de sorte que vous pouvez juste faire une extraction directe des valeurs.
MODIFIER, 2018: Encore en train de downvotes pour cela, et à juste titre! Je pars de cette réponse jusqu'alors, les gens peuvent voir pourquoi j'ai été à l'origine du mal, et pour me rappeler de ne pas se tromper dans le futur.
Qui est ce que j'ai dit dans ma réponse 🙂
En effet. Bien que dans ce cas, vous n'êtes pas à répondre à la question - l'OP demande "comment" vous faites "extraire un avec une relative facilité" 🙂
Cette réponse est tout simplement faux. Il est possible de générer une clé publique RSA de la clé privée.
En effet. Il semble qu'il y a six ans, ma compréhension de la RSA a été plutôt bancale. J'ai édité pour inclure la réponse correcte.
OriginalL'auteur Polynomial
L'hypothèse est que nous parlons RSA les clés privées et Publiques. Alors, si vous travaillez à partir d'un format PEM fichier, puis vous devez d'abord lire la clé privée à partir du fichier dans un PrivateKey objet:
où File2String est quelque chose comme:
Maintenant, vous pouvez générer le correspondant PublicKey avec ce code:
...
Crédits: Comment obtenir un RSA PublicKey en donnant un PrivateKey?
OriginalL'auteur Eli Rosencruft
Assurez-vous que Eli Rosencruft réponse est fondamentalement correcte, mais la commande du module et le public en exposant ne sont pas correctes! C'est l'énoncé correct:
OriginalL'auteur caschulz88