Posso usare RSACryptoServiceProvider chiavi pubbliche / private per interoperabilità con Crypto ++?

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

Domanda

Ho creato una chiave pubblica / privata utilizzando RSACryptoServiceProvider e salvato in formato XML. Posso usare questo per cifrare / decifrare / firmare e verificare i dati in .NET.

Ho un'altra applicazione che è destinato per l'esecuzione su un server Linux. Sto sviluppando in C ++ e sto usando Crypto ++ per le mie esigenze di crittografia.

Voglio condividere i dati tra le due applicazioni, ma per farlo ho bisogno di convertire i RSAParameters in chiavi pubbliche / private che Crypto ++ può capire.

Sono anche aperti a utilizzare convertire le chiavi pubbliche / private generate da Crypto ++ in RSAParameters se è più facile da fare.

Tutte le idee?

È stato utile?

Soluzione

Il modo più semplice è probabilmente quello di utilizzare i RSAParameters direttamente invece di andare su XML.

Basta memorizzare i byte-array contenuti nelle RSAParameters in un file con un formato di vostra scelta. Leggi i byte-array di nuovo nel vostro programma C ++ e creare cryptopp :: Integer s da loro. Utilizzare i numeri interi per inizializzare un RSAFunction (chiave pubblica) o InvertibleRSAFunction (chiave privata).

Il modo inverso è simile: cioè

.
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.

e trasferire gli array alla vostra NET-applicazione, in cui è possibile utilizzare per inizializzare un RSAParameters.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top