我正在寻找Windows加密的不同解决方案,偶然发现了这两个库。它们的头文件是Wincrypt.h
和Sspi.h
。它们似乎都提供了加密和解密例程:CryptEncryptMessage
和EncryptMessage
,它们都提供了加密上下文句柄,并且确实很相似。那我该怎么用呢?
P.S。还有CNG,但据我所知,它只是Wincrypt的后继产品,将很快弃用。
答案 0 :(得分:1)
根据MSDN,EncryptMessage
函数对消息进行加密以提供保密性。 EncryptMessage
允许应用程序在所选机制支持的加密算法中进行选择。
此功能仅可用作SASL机制。
例如,如果要在Windows Domain环境中使用Microsoft的安全支持提供程序接口(SSPI)在两个实体之间(在C ++中)发送加密和签名的消息。则可以使用EncryptMessage
。
但是CryptEncryptMessage
是CAPI2 PKI加密API。
通常,在没有上下文的情况下,
EncryptMessage
的意思是 为您拥有证书的某个实体加密数据(仅用于 加密)并可以离线使用,CryptEncryptMessage
仅可使用 建立安全性后,客户端和服务器之间的连接 使用InitializeSecurityContext/AcceptSecurityContext
的上下文。
如果您想了解更多信息,请参阅:Difference between CryptEncryptMessage EncryptMessage(Negotiate)