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

发布于 2024-07-21 05:07:06 字数 471 浏览 5 评论 0 原文

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

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

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

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

有任何想法吗?

I've created a public/private key using RSACryptoServiceProvider and saved it as XML. I can use this to encrypt/decrypt/sign and verify data in .NET.

I have another application which is intended to run on a Linux server. I'm developing it in C++ and I'm using Crypto++ for my cryptography needs.

I want to share data between these two applications, but to do that I need to convert the RSAParameters into public/private keys that Crypto++ can understand.

I'm also open to using convert public/private keys generated by Crypto++ into RSAParameters if it is easier to do.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

滿滿的愛 2024-07-28 05:07:06

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

只需使用您自己选择的格式将 RSAParameters 中包含的字节数组存储在文件中即可。 在 C++ 程序中读回字节数组并创建 CryptoPP::Integer来自他们。 使用这些整数初始化 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应用程序,您可以在其中使用它们来初始化RSA参数。

The easiest way is probably to use the RSAParameters directly instead of going over XML.

Just store the byte-arrays contained in the RSAParameters in a file using a format of your own choice. Read the byte-arrays back in your C++ program and create CryptoPP::Integers from them. Use those Integers to Initialize a RSAFunction (public key) or InvertibleRSAFunction (private key).

The reverse way is similiar: 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.

and transfer the arrays to your .NET-application, where you can use them to initialize an RSAParameters.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文