Puis-je utiliser les clés RSACryptoServiceProvider public / privé pour Crypto ++ avec interop?
-
06-09-2019 - |
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?
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.