C# RSA 等效于 C++ Crypto API 的代码
Posted
技术标签:
【中文标题】C# RSA 等效于 C++ Crypto API 的代码【英文标题】:C# RSA equivalent code to the C++ Crypto API 【发布时间】:2009-03-25 04:22:38 【问题描述】:DWORD nSize;
LPBYTE lpData;
HCRYPTKEY hPublicKey;
nSize = ReadFromFile(lpszUserPublicKey, NULL);
if(nSize == -1)
return FALSE;
lpData = new BYTE[nSize];
ReadFromFile(lpszUserPublicKey, lpData);
if(!CryptImportKey(hProv, lpData, nSize, NULL, 0, &hPublicKey))
delete lpData;
return FALSE;
Erase(lpData, nSize);
// Get the data size(&nSize)
if(!CryptExportKey(hKey, hPublicKey, SIMPLEBLOB, 0, NULL, &nSize))
return FALSE;
lpData = new BYTE[nSize];
CryptExportKey(hKey, hPublicKey, SIMPLEBLOB, 0, lpData, &nSize);
if(WriteToFile(lpszLicenseFile, lpData, nSize) == -1)
delete lpData;
return FALSE;
delete lpData;
return CryptDestroyKey(hPublicKey);
上面的代码如何用 C# 编写。我对 Crypto API 调用特别感兴趣。注意,使用的加密方法是 RSA
【问题讨论】:
希望有帮助:How to generate key pairs, encrypt and decrypt data with CryptoAPI 【参考方案1】:Thiscodeproject 文章似乎符合您的需求。如文章所示,C# 在 System.Security.Cryptography 中有一个 RSACryptoServiceProvider 类,使事情变得更简单,因此您不必滚动整个解决方案并手动翻译所有代码。
【讨论】:
感谢您的评论。我知道如何使用 RSACryptoServiceProvider。但是 RSACryptoServiceProvider 类上与上述 Crypto API 调用等效的方法是什么。 您可以使用来自red-gate.com/products/reflector 的.NET Reflector 查看所有内容:)【参考方案2】:如果您有兴趣,我在 C++ 和 C# 中写了一篇关于 RSA 的文章。 它包含代码以及让 RSA 在两种语言中工作、在它们之间交换密钥和消息所需了解的所有信息:)。
您可以在这里找到它:Crypt in C++ and Decrypt in C# (and C++)
【讨论】:
以上是关于C# RSA 等效于 C++ Crypto API 的代码的主要内容,如果未能解决你的问题,请参考以下文章
Qt C++ 等效于具有自定义格式的 C# toString
C++ ULONG 定义为 VB.NET 还是 C# 等效?