powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / CryptAcquireContext - CryptoAPI problem!
3 сообщений из 3, страница 1 из 1
CryptAcquireContext - CryptoAPI problem!
    #34218173
needjava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема такая — CryptAcquireContext — возвращает "Набор ключей не определен"
Вот код:
Код: plaintext
1.
2.
3.
4.
HCRYPTPROV hCryptProv = NULL;
BOOL    result;

result = CryptAcquireContext (&hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL,  0 );

Пробовал следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
//1
result = CryptAcquireContext (&hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, NULL);
//2
result = CryptAcquireContext (&hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET);
//3
result = CryptAcquireContext (&hCryptProv, NULL, MS_DEF_PROV, PROV_RSA_FULL,  0 );


Не помогло.

А если вот так:
Код: plaintext
1.
result = CryptAcquireContext (&hCryptProv, NULL, NULL, PROV_RSA_FULL,  0 );


то работает(то есть — провайдер по умолчанию)

Причем до этого я уже делал(в другой функции):
Код: plaintext
1.
2.
3.
4.
5.
6.
BOOL    result;
result = CryptAcquireContext (&hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL,  0 );
...
...
...
result = CryptReleaseContext(hCryptProv,  0 );

и result везде был 1. А почему здесь ошибка, понять никак не могу?
А кроме того!:
Если вот так сделать то result = 1, но валится дальше:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
BOOL result;
result= CryptAcquireContext (&hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL,  0 ); // здесь result = 0
result= CryptReleaseContext(hCryptProv,  0 );// здесь result = 0
hCryptProv = NULL;
result= CryptAcquireContext (&hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL,  0 );// здесь result = 0
result= CryptReleaseContext(hCryptProv,  0 );// здесь result = 0
hCryptProv = NULL;
result= CryptAcquireContext (&hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL,  0 );// !!!!!здесь result = 1 !!!!
result= CryptReleaseContext(hCryptProv,  0 );// !!!! здесь result = 1 !!!
hCryptProv = NULL;
result= CryptAcquireContext (&hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL,  0 );// !!!!!здесь result = 1 !!!!!
...
...
...
result = CryptImportKey (hCryptProv, (BYTE *)&sessKey[ 0 ], sessKeySize, hPublicKey,  0 , &hSessionKey); // здесь валится result = 0
...
...
...
result= CryptReleaseContext(hCryptProv,  0 );// !!!! здесь result = 1 !!!
Валится с ошибкой — плохая версия поставщика...

Я уже весь мозг себе ... Что за хрень такая!
...
Рейтинг: 0 / 0
CryptAcquireContext - CryptoAPI problem!
    #34219391
Maksim UM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю, нужно попробовать задать какое-нибудь имя контейнера.
...
Рейтинг: 0 / 0
CryptAcquireContext - CryptoAPI problem!
    #34463745
Campri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если привязка к пользователю/машине не нужна (ну например простое шифрование на основе пароля), то попробуй вот так:
Код: plaintext
1.
result = CryptAcquireContext(&hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);

это означает простое получение контекста без работы с контейнером ключей...
(да, и если используется CRYPT_VERIFYCONTEXT, то второй параметр должен быть NULL)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / CryptAcquireContext - CryptoAPI problem!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]