Расшифруйте с помощью неэкспортируемого закрытого ключа с CryptoAPI

Я создал пару ключей RSA в хранилище ключей Windows.

Я успешно зашифровал данные (симметричный ключ):

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.


Далее я хочу расшифровать данные с помощью закрытого ключа, но он не подлежит экспорту. Все примеры, которые я видел, включают импорт ключей.

Как я могу расшифровать данные без экспорта ключа?

5

Решение

Ну, я не эксперт в магазине RSA / Microsoft, но я думаю, что я понимаю, что вы пытаетесь сделать здесь. Вы делаете это немного назад. Вы используете открытый ключ для шифрования, а закрытый — для расшифровки. Таким образом, предполагается, что у вас будет закрытый ключ, поскольку именно это вы использовали для генерации открытого ключа.

Итак, давайте посмотрим … для расшифровки данных вам нужен ключ, верно? Таким образом, вы можете (а) зашифровать данные с помощью открытого ключа и затем найти способ экспортировать закрытый ключ, но тогда вы будете использовать что-то похожее на шифрование с закрытым ключом, и вам все равно будет лучше использовать blowfish, или ( б) зашифровать данные с помощью вашего личного ключа, чтобы вы могли поделиться открытым ключом для расшифровки. Помните, CryptImportPublicKeyInfo возвращает дескриптор к нему: http://msdn.microsoft.com/en-us/library/windows/desktop/aa380209(v=vs.85).aspx

Так что я говорю, что у вас уже есть свой ответ. Это там, когда вы говорите, что у вас есть симметричный ключ. Либо вы будете использовать тот же открытый ключ для расшифровки, либо это будет простое преобразование: http://en.wikipedia.org/wiki/Symmetric-key_algorithm

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector