4

我是一名 C++ 开发人员,但在 Windows 开发方面没有很强的背景。

我的主要问题围绕着Crypto API的使用。我将使用CryptAcquireContext 之类的函数。在研究有关此 API 的更多信息时,仅描述为“Win32 Crypto API”。我想知道是否有“Win64 Crypto API”?

如果没有,如果我开发了一个在 Visual Studio 中使用“Win32 Crypto API”并编译为 64 位模式的应用程序。如果我用32位编译会更好吗?

要开发一个使用 Crypto API 的 64 位应用程序,我需要做什么?

如果可能,请报告您在使用加密 API、检索证书、携带签名等时开发 64 位应用程序时遇到的任何问题。

文章非常受欢迎。

4

3 回答 3

6

加密 api 在 64 位中工作正常,只需%ProgramFiles%\Microsoft SDKs\Windows\vX.X\Lib\x64用作您的库而不是 %ProgramFiles%\Microsoft SDKs\Windows\vX.X\Lib它会正常工作,32 位和 64 位库之间应该没有区别,因为调用时没有使用正确的数据类型(特别是指针宽度)

于 2012-02-22T18:00:37.770 回答
4

术语“Win32”是为了将其与 .Net 加密 API 区别开来,而不是 64 位 API。您的研究资源可能尚未更新为使用“Win64”或“本机”等较新的术语。不过,看起来 MSDN 并没有犯这个错误。

将它与 64 位应用程序一起使用应该没有问题(CAPICOM 除外,它实际上只是 32 位)。

于 2012-02-22T18:04:03.947 回答
2

Crypto API 位于 ADVAPI DLL 中。但是您链接到 CAPICOM,它已被弃用,不应使用,并且仅为 32 位。

CryptAcquireContext() 是存在于 64 位和 32 位 Windows 中的 ADVAPI。

于 2012-02-22T18:02:01.700 回答