¿Puedo utilizar claves públicas / privadas RSACryptoServiceProvider a INTEROP con Crypto ++?

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

Pregunta

He creado una clave pública / privada utilizando RSACryptoServiceProvider y guardado como XML. Puedo usar esto para cifrar / descifrar / firmar y verificar los datos en .NET.

Tengo otra aplicación que está destinada a funcionar en un servidor Linux. Estoy desarrollando en C ++ y estoy usando Crypto ++ para mis necesidades de criptografía.

Quiero compartir datos entre estas dos aplicaciones, pero para hacerlo necesito para convertir los RSAParameters en claves públicas / privadas que Crypto ++ puede entender.

También estoy abierto a convertir usando las claves públicas / privadas generadas por Crypto ++ en RSAParameters si es más fácil de hacer.

¿Alguna idea?

¿Fue útil?

Solución

La forma más sencilla es probablemente usar los RSAParameters directamente en lugar de pasar por encima XML.

Sólo almacenar el byte de matrices contenidas en los RSAParameters en un archivo utilizando un formato de su propia elección. Leer los bytes-arrays de nuevo en su programa en C ++ y crear CryptoPP :: Entero s de ellos. Utilizar esos números enteros para inicializar un RSAFunction (clave pública) o InvertibleRSAFunction (clave privada).

La forma inversa es similar: es decir

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

y transferir las matrices para su aplicación .NET, donde se las puede utilizar para inicializar un RSAParameters.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top