2017-05-28 2 views
0

J'ai clé privée et publique dans des fichiers séparés.paramètre incorrect dans l'erreur de clé privée

dans l'enseignement dit utiliser ce code:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); 

rsa.FromXmlString(PrivateKey); 

mais lorsque le code atteint en deuxième ligne je reçois cette erreur:

Une exception non gérée du type 'System.Security.Cryptography.CryptographicException' a eu lieu dans mscorlib.dll

Informations supplémentaires: Le paramètre est incorrect.

quel est le problème?

dans le code de l'échantillon de la société que nous avons la clé, il utilise un échantillon peivate et la clé publique comme ceci:

<RSAKeyValue><Modulus>KEY VALUE</Modulus><Exponent>AQAB</Exponent></RSAKeyValue> 

Même si je me joins <RSAKeyValue><Modulus> au début et à </Modulus><Exponent>AQAB</Exponent></RSAKeyValue>

à la fin, noter des travaux

+0

Pouvez-vous montrer un exemple de clé privée? –

Répondre

0

J'ai utilisé ce site pour convertir ma clé de chaîne pure xml:

https://superdry.apphb.com/tools/online-rsa-key-converter

Parce que .Net veulent des clés au format xml

+0

Est-ce une réponse qui a résolu votre problème? –

+0

@ArtjomB. oui, et je veux tout code en C# qui convertit ma clé en xml et vice versa comme le site ci-dessus –

+0

Le site auquel vous avez lié dans votre réponse contient le code complet pour cela. Si vous faites défiler vers le bas sur cette page, il y a un lien vers un aperçu. –

-1

Toutes les chaînes de clé ne sont pas des octets de clé valides. Le problème pourrait résider dans cela. Essayez générer une clé en utilisant le code ci-dessous et l'utiliser avec votre code pour voir si le problème est avec la logique ou la chaîne clé:

var rsa1 = new RSACryptoServiceProvider([number of bits of code]); 
Console.WriteLine(rsa1.ToXmlString(true)); 
+0

plus de réponses? –

+0

Des nouvelles de celui-ci ?! – Emad

+0

J'ai cherché et compris dans. NET devrait convertir la clé privée et publique en XML, mais je ne sais pas quel est le processus de les convertir –

0

La cause la plus probable est que votre clé privée ne dispose pas de toutes les D, P, Q, DP, DQ, les valeurs de InverseQ. La prochaine cause la plus probable est que votre D, en byte [], n'est pas aussi long que Modulus (in byte []). Dans la même veine, P/Q/DP/DQ/InverseQ doivent tous avoir leur octet [] comme la moitié de la longueur du module (arrondi au supérieur).

Il existe certaines clés pour lesquelles cela n'est pas vrai dans le format XML. La méthode la plus fiable consiste à créer vous-même la structure RSAParameters et à appeler le ImportParameters. Une raison: les méthodes XML ne sont pas du tout disponibles dans .NET Core, mais ImportParameters l'est.