我在Windows密鑰存儲中創建了RSA密鑰對。解密使用CryptoAPI不可導出的私鑰
予加密的數據(對稱密鑰)在成功:
HCERTSTORE hstore = ::CertOpenSystemStore(NULL, L"TestStore");
PCCERT_CONTEXT pctxt = ::CertFindCertificateInStore(hstore, X509_ASN_ENCODING, NULL,
CERT_FIND_SUBJECT_STR, L"My Test Keys", NULL);
HCRYPTPROV hprovider = NULL;
if(!::CryptAcquireContext(&hprovider,
NULL,
MS_ENHANCED_PROV,
PROV_RSA_FULL,
NULL/*CRYPT_NEWKEYSET*/))
{
DWORD err = ::GetLastError();
return 0;
}
HCRYPTKEY hkey = NULL;
if(!::CryptImportPublicKeyInfo(hprovider,
X509_ASN_ENCODING,
&pctxt->pCertInfo->SubjectPublicKeyInfo,
&hkey
))
{
return 0;
}
現在我使用CryptEncrypt()與HCRYPTKEY。
接下來我想用私鑰解密數據,但它不可導出。我見過的所有例子都包括密鑰的導入。
如何在不導出密鑰的情況下解密數據?