CryptoAPI - экспорт / импорт ключей между разными версиями Windows - PullRequest
1 голос
/ 01 декабря 2010

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

. В обоих случаях провайдер шифрования инициализируется с помощью вызова.

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

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

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

1 Ответ

0 голосов
/ 09 декабря 2010

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

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

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

...