CryptoAPI Проблема с публичным ключом

Тема в разделе "WASM.CRYPTO", создана пользователем Wizard109, 23 фев 2012.

  1. Wizard109

    Wizard109 New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2006
    Сообщения:
    347
    Насколько я понимаю, публичный ключ предназначен для того, чтобы им шифровать данные, но расшифровать их с его помощью нельзя. Ниже - приблизительный код. Проблема в том, что CryptDecrypt выполняется успешно и расшифровывает данные, хотя не должна бы...
    Вопрос по существу: чего я не пойму ?

    Код (Text):
    1. CryptAcquireContext(&hProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, 0)
    2. CryptGenKey(hProv, CALG_RSA_KEYX, KEYLENGTH|CRYPT_EXPORTABLE, &hKeyPair)
    3. CryptExportKey(hKeyPair, NULL, PUBLICKEYBLOB, 0, pbPublicKey, &dwPublicKeySize)
    4. CryptImportKey(hProv, pbPublicKey, dwPublicKeySize, NULL, CRYPT_EXPORTABLE, &hPublicKey)
    5.  
    6. CryptEncrypt(hPublicKey, 0, TRUE, 0, (BYTE*)EncryptedBuff, &dwDataToEncryptSize, BuffSize)
    7. CryptDecrypt(hPublicKey, 0, TRUE, 0, (BYTE*)EncryptedBuff, &BuffSize)
     
  2. Wizard109

    Wizard109 New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2006
    Сообщения:
    347
    Идущим тернистым путем дзена посвящается.

    Вышеобозначенная проблема имеет место быть при тестировании на одной машине для одного контейнера с ключами. Судя по всему при импорте контейнер просмотривается на наличие такой же пары как импортируемая и к публичному ключу привязывает уже существующий там, созданный при генерации приватный ключ, причем вызов CryptDestroyKey (для удаления сгенерированной пары ключей и удаления из контейнера приватного) почему-то не помогает. Дабы проверить работоспособность не трогая VMWare я просто освободил контейнер через CryptReleaseContext и создал новый (именованный, причем имя не совпадает с контейнером где генерится пара ключей). После подобного шаманства приватный ключ ведет себя так, как должен. ИМХО про такие "особенности" неплохо бы писать в официальной документации однако Мелкософт такой Мелкософт...
     
  3. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    3.633
    а ещё одна "особенность" == отсылка ключей на сервачи мокрых :))