, CryptoAPI . , ( .NET framework). , - ; , , CryptoAPI ( " " ). , Microsoft , . CryptoAPI , :
HCRYPTPROV hProv = NULL;
if(CryptAcquireContext(&hProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
{
HKEY hKey = NULL;
if(ImportPlainTextSessionKey(hProv, lpKeyData, cbKeyData, CALG_3DES, &hKey))
{
if(CryptSetKeyParam(hKey, KP_IV, lpIVData, 0))
{
DWORD cbRead = 0;
while(ReadFile(hSourceFile, buffer, 8192, &cbRead, NULL) && cbRead)
{
BOOL bFinal = cbRead < 8192 ? TRUE : FALSE;
DWORD cbDecrypted = 0;
if(CryptDecrypt(hKey, NULL, bFinal, 0, buffer, &cbDecrypted))
{
DWORD cbWritten = 0;
WriteFile(hDestFile, buffer, cbDecrypted, &cbWritten, NULL);
}
}
}
CryptDestroyKey(hKey);
hKey = NULL;
}
CryptReleaseContext(hProv, 0);
hProv = NULL;
}