Windows C API:wincrypt和sspi有什​​么区别?

时间:2019-11-20 11:04:09

标签: windows winapi cryptoapi

我正在寻找Windows加密的不同解决方案,偶然发现了这两个库。它们的头文件是Wincrypt.hSspi.h。它们似乎都提供了加密和解密例程:CryptEncryptMessageEncryptMessage,它们都提供了加密上下文句柄,并且确实很相似。那我该怎么用呢?

P.S。还有CNG,但据我所知,它只是Wincrypt的后继产品,将很快弃用。

1 个答案:

答案 0 :(得分:1)

根据MSDNEncryptMessage函数对消息进行加密以提供保密性。 EncryptMessage允许应用程序在所选机制支持的加密算法中进行选择。

此功能仅可用作SASL机制。

例如,如果要在Windows Domain环境中使用Microsoft的安全支持提供程序接口(SSPI)在两个实体之间(在C ++中)发送加密和签名的消息。则可以使用EncryptMessage

但是CryptEncryptMessage是CAPI2 PKI加密API。

  

通常,在没有上下文的情况下,EncryptMessage的意思是   为您拥有证书的某个实体加密数据(仅用于   加密)并可以离线使用,CryptEncryptMessage仅可使用   建立安全性后,客户端和服务器之间的连接   使用InitializeSecurityContext/AcceptSecurityContext的上下文。

如果您想了解更多信息,请参阅:Difference between CryptEncryptMessage EncryptMessage(Negotiate)