我可以使用 RSACryptoServiceProvider 公钥/私钥与 Crypto++ 进行互操作吗?
-
06-09-2019 - |
题
我已经使用创建了公钥/私钥 RSAC加密服务提供者 并将其保存为 XML。我可以用它来加密/解密/签名并验证.NET 中的数据。
我有另一个应用程序打算在 Linux 服务器上运行。我正在用 C++ 开发它,并使用 Crypto++ 来满足我的加密需求。
我想在这两个应用程序之间共享数据,但要做到这一点,我需要将 RSAParameters 转换为 Crypto++ 可以理解的公钥/私钥。
如果更容易的话,我也愿意使用将 Crypto++ 生成的公钥/私钥转换为 RSAParameters。
有任何想法吗?
解决方案
最简单的方法可能是直接使用 RSAParameters,而不是通过 XML。
只需使用您自己选择的格式将 RSAParameters 中包含的字节数组存储在文件中即可。在 C++ 程序中读回字节数组并创建 CryptoPP::整数来自他们。使用这些整数来初始化 RSA函数 (公钥)或 可逆RSA函数 (私钥)。
反向方法类似:IE。
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。
不隶属于 StackOverflow