Puis-je utiliser les clés RSACryptoServiceProvider public / privé pour Crypto ++ avec interop?

StackOverflow https://stackoverflow.com/questions/919733

Question

J'ai créé une clé publique / privée en utilisant RSACryptoServiceProvider et enregistré au format XML. Je peux l'utiliser pour crypter / décrypter / signer et vérifier les données dans .NET.

J'ai une autre application qui est destinée à fonctionner sur un serveur Linux. Je développe en C ++ et j'utilise Crypto ++ pour mes besoins de cryptographie.

Je veux partager des données entre ces deux applications, mais de faire que je dois convertir les RSAParameters en clés publiques / privées qui Crypto ++ peut comprendre.

Je suis aussi ouvert à l'aide de convertir les clés publiques / privées générées par Crypto ++ dans RSAParameters s'il est plus facile de le faire.

Toutes les idées?

Était-ce utile?

La solution

Le plus simple est probablement d'utiliser les RSAParameters directement au lieu d'aller sur XML.

Il suffit de stocker les octets-réseaux contenus dans les RSAParameters dans un fichier en utilisant un format de votre choix. Lire les octets-réseaux en arrière dans votre programme C ++ et créer cryptopp :: Entier s d'eux. Utilisez ces Entiers pour initialiser un RSAFunction (clé publique) ou InvertibleRSAFunction (clé privée).

Le sens inverse est similaire: i.e.

.
RSAFunction publicKey = ...;

size_t modulusLength = publicKey.getModulus().ByteCount();
unsigned char * modulus = new unsigned char[modulusLength];
publicKey.getModulus().Encode(modulus, modulusLength);

// similarly with PublicExponent and remember to clean up the arrays.

et transférer les tableaux à votre .NET application, où vous pouvez les utiliser pour initialiser un RSAParameters.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top