【问题标题】:Developing 64 bit applications that use MS CryptoAPI开发使用 MS CryptoAPI 的 64 位应用程序
【发布时间】:2012-03-13 02:24:39
【问题描述】:

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

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

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

如何开发使用 Crypto API 的 64 位应用程序?

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

文章非常受欢迎。

【问题讨论】:

  • 平台SDK肯定有crypt32.lib和advapi32.lib的64位导入库。

标签: c++ windows cryptography cryptoapi mscapi


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2010-12-23
        • 2018-03-25
        • 2015-04-19
        • 2011-09-11
        • 1970-01-01
        • 2020-07-04
        • 1970-01-01
        • 2012-12-09
        • 2010-11-05
        相关资源
        最近更新 更多