C # RSA эквивалентный код для C ++ Crypto API - PullRequest
0 голосов
/ 25 марта 2009
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

Ответы [ 2 ]

2 голосов
/ 25 марта 2009

Эта статья о кодпроекте, кажется, соответствует вашим потребностям. Как показано в статье, C # имеет класс RSACryptoServiceProvider в System.Security.Cryptography, чтобы немного упростить задачу, чтобы вам не приходилось разбирать полное решение и переводить весь этот код вручную.

1 голос
/ 21 апреля 2011


Я написал статью о RSA в C ++ и C # , если вы заинтересованы. Он содержит код и все, что вам нужно знать для работы RSA на обоих языках, обмена ключами и сообщениями между ними:).

Вы можете найти его здесь:
Crypt на C ++ и расшифровка на C # (и C ++)

...