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);
Comment le code ci-dessus serait écrit en C#. Je suis particulièrement intéressé par les appels API Crypto. Notez, la méthode de cryptage utilisée est RSAC# code équivalent RSA à l'API crypto C++
espoir qui aide: [Comment générer des paires de clés, chiffrer et déchiffrer des données avec CryptoAPI] (http://blogs.msdn.com/b/alejacma/archive /2008/01/28/how-to-generate-key-pairs-encrypt-and-decrypt-data-with-cryptoapi.aspx) – lsalamon