1

В Win 2003 32 бит, я успешно экспортирую PRIVATEKEYBLOB с вызовом CryptExportKey (dwFlags = 0). Затем я пытаюсь импортировать ключевой блок на 64-битный Win Server 2008 с 64-разрядным исполняемым файлом, вызов CryptImportKey с ошибкой NTE_BAD_DATA.CryptoAPI - экспорт/импорт ключей между различными версиями Windows

В обоих случаях поставщик криптографических инициализируется вызовом

CryptAcquireContext (& hProv, szContainer, NULL, PROV_RSA_AES, CRYPT_MACHINE_KEYSET)

Пароли для экспорта/матч импорта , Открытый ключ основан на CryptDeriveKey хэша md5 паролей, которые идентичны в их текстовой репрезентации. Я не уверен, что открытые ключи оказались равными в двух системах.

Являются ли различные типы систем (Win 2003 32 бит против Win 2008 64 бит) ожидаемой причиной отказа, и есть ли способ заставить это работать?

ответ

0

Как предполагалось, открытые ключи, созданные CCryptDerivedKey от ATL, не были равны по двум системам. Настройки по умолчанию для CCryptDerivedKey должны быть разными в двух версиях библиотеки ATL.

Поскольку у меня был доступ к исходному и целевому серверам, я мог повторно импортировать и импортировать ключ согласованным образом - указав алгоритм, размер ключа и наличие соли.

Было бы неплохо узнать, какие точные настройки метода CCryptDerivedKey :: Initialize были в более ранней версии библиотеки ATL (Visual Studio 2005, я считаю).

 Смежные вопросы

  • Нет связанных вопросов^_^