【问题标题】:Can I use RSACryptoServiceProvider public/private keys to interop with Crypto++?我可以使用 RSACryptoServiceProvider 公钥/私钥与 Crypto++ 互操作吗?
【发布时间】:2009-05-28 08:04:11
【问题描述】:

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

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

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

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

有什么想法吗?

【问题讨论】:

    标签: .net interop cryptography crypto++


    【解决方案1】:

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

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

    反之亦然:即

    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。

    【讨论】:

    • 我知道这对某人来说非常简单......昨天刚刚通过将私钥打包成 PKCS #8 格式和公钥打包成 X509 格式让它工作了。我认为你的方式会更容易。
    猜你喜欢
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多