Разработка 64-битных приложений, использующих MS CryptoAPI
-
29-10-2019 - |
Вопрос
Я разработчик C ++, но не имею большого опыта в разработке Windows.
Мой главный вопрос вращается вокруг использования Crypto API . Я буду использовать такие функции, как CryptAcquireContext а>. Изучая больше об этом API, описанном только как «Win32 Crypto API». Интересно, есть ли «Win64 Crypto API»?
В противном случае, если я разработаю приложение, использующее «Win32 Crypto API» в Visual Studio и компилирующее в 64-битном режиме. Было бы лучше, если бы я скомпилировал 32-битную версию?
Что мне нужно сделать, чтобы разработать 64-битное приложение, использующее Crypto API?
Если возможно, сообщайте о любых проблемах, которые возникли у вас при разработке приложений для 64-битных приложений при использовании криптографического API, получения сертификатов, переноса подписей и т. д.
Статьи очень приветствуются.
Решение
Crypto api отлично работает в 64-битной версии, просто используйте %ProgramFiles%\Microsoft SDKs\Windows\vX.X\Lib\x64
в качестве вашей библиотеки вместо %ProgramFiles%\Microsoft SDKs\Windows\vX.X\Lib
, и она будет работать нормально, не должно быть различий между 32-битной и 64-битной библиотеками, которые не обрабатываются с использованием правильных данных.типы для вызовов (в частности, ширина указателя)
Другие советы
Термин «Win32» используется для того, чтобы отличать его от API шифрования .Net, а не от 64-битного API.Ваши исследовательские ресурсы, вероятно, просто не обновлены для использования новых терминов, таких как «Win64» или «родной».Однако не похоже, что MSDN совершает такую ошибку.
Не должно возникнуть проблем при использовании его с 64-битным приложением (кроме CAPICOM, который на самом деле является только 32-битным).
Crypto API находится в ADVAPI DLL.Но вы ссылаетесь на CAPICOM, который устарел, не должен использоваться и имеет только 32-битный формат.
CryptAcquireContext () - это ADVAPI, который существует как в 64-битной, так и в 32-битной Windows.