Posso usar chaves RSACryptoServiceProvider públicas / privadas para interoperabilidade com Crypto ++?

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

Pergunta

Eu criei uma chave pública / privada usando RSACryptoServiceProvider e salva-lo como XML. Posso usar este para criptografar / descriptografar / assinar e verificar dados em .NET.

Eu tenho uma outra aplicação que se destina a ser executado em um servidor Linux. Estou desenvolvendo-o em C ++ e estou usando Crypto ++ para minhas necessidades de criptografia.

Eu quero compartilhar dados entre estas duas aplicações, mas para isso eu preciso converter os RSAParameters em chaves públicas / privadas que Crypto ++ pode entender.

Eu também estou aberto a usando / chaves públicas convertido privados gerados pela Crypto ++ em RSAParameters se é mais fácil de fazer.

Todas as idéias?

Foi útil?

Solução

A maneira mais fácil é provavelmente usar as RSAParameters diretamente em vez de ir sobre XML.

Apenas armazenar o byte de matrizes contidas nos RSAParameters em um arquivo usando um formato de sua própria escolha. Leia o byte de matrizes de volta em seu programa C ++ e criar CryptoPP :: Integer é a partir deles. Use estes inteiros para inicializar um RSAFunction (chave pública) ou InvertibleRSAFunction (chave privada).

O caminho inverso é semelhante:. I

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 transferir as matrizes para o .NET do aplicativo, onde você pode usá-los para inicializar um RSAParameters.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top