Kann ich RSACryptoServiceProvider öffentliche / private Schlüssel verwenden, um mit Crypto ++ Interop?

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

Frage

Ich habe einen öffentlichen / privaten Schlüssel RSACryptoServiceProvider und gespeichert als XML. Ich kann dies zum Verschlüsseln / Entschlüsseln / signieren und Daten in .NET zu überprüfen.

Ich habe eine andere Anwendung, die auf einem Linux-Server ausgeführt werden soll. Ich bin es in C ++ zu entwickeln und ich bin mit Crypto ++ für meine Kryptographie Bedürfnisse.

Ich möchte Daten zwischen diesen beiden Anwendungen teilen, aber zu tun, dass ich die RSAParameters in öffentliche / private Schlüssel konvertieren müssen, die Crypto ++ verstehen kann.

Ich bin auch offen für öffentliche / private Schlüssel von Crypto ++ in RSAParameters erzeugt mit konvertieren, wenn es einfacher ist, zu tun.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Der einfachste Weg ist wahrscheinlich die RSAParameters zu verwenden, sondern direkt über XML gehen.

Just speichern Sie den Byte-Arrays in dem RSAParameters in einer Datei ein Format Ihrer Wahl verwenden. Lesen Sie die Byte-Arrays wieder in Ihrem C ++ Programm und erstellen CryptoPP :: Integer s von ihnen. Verwenden Sie diese ganzen Zahlen eine RSAFunction (öffentlicher Schlüssel) oder InvertibleRSAFunction (private Schlüssel).

Der umgekehrte Weg ist ähnlich: D.h.

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

und übertragen Sie die Felder in Ihre .NET-Anwendung, wo Sie sie verwenden können eine RSAParameters zu initialisieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top