我可以使用RSACryptoServiceProvider公钥/私钥与Crypto ++互操作吗?

时间:2009-05-28 08:04:11

标签: .net interop cryptography crypto++

我使用RSACryptoServiceProvider创建了一个公钥/私钥,并将其保存为XML。我可以使用它来加密/解密/签名并验证.NET中的数据。

我有另一个应用程序,它可以在Linux服务器上运行。我正在用C ++开发它,我正在使用Crypto ++来满足我的加密需求。

我想在这两个应用程序之间共享数据,但为此我需要将RSAParameters转换为Crypto ++可以理解的公钥/私钥。

如果更容易做到,我也愿意将Crypto ++生成的公钥/私钥转换为RSAParameters。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

最简单的方法可能是直接使用RSAParameters,而不是通过XML。

使用您自己选择的格式将RSAParameters中包含的字节数组存储在文件中。在C ++程序中读回字节数组并从中创建CryptoPP::Integer。使用这些整数初始化RSAFunction(公钥)或InvertibleRSAFunction(私钥)。

相反的方式是类似的: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.

并将数组传输到.NET应用程序,您可以使用它们来初始化RSAParameters。