Windows C API: wincrypt 和 sspi 有什么区别?
Windows C API: what's the difference between wincrypt and sspi?
我正在寻找 windows 密码学的不同解决方案,偶然发现了这两个库。它们的头文件是 Wincrypt.h
和 Sspi.h
。它们似乎都提供加密和解密例程:CryptEncryptMessage
和EncryptMessage
,它们都提供加密上下文句柄并且非常相似。那我用它们做什么?
P.S。还有 CNG,但据我了解,它只是 wincrypt 的继任者,很快就会被弃用。
根据 MSDN,EncryptMessage
函数加密消息以提供隐私。 EncryptMessage
允许应用程序在所选机制支持的加密算法中进行选择。
此函数仅作为 SASL 机制可用。
例如,如果您想在 Windows 域环境中使用 Microsoft 的安全支持提供程序接口 (SSPI) 在两个实体之间发送加密和签名的消息(在 C++ 中)。那么您可以使用 EncryptMessage
.
但是CryptEncryptMessage
是CAPI2 PKI加密API.
Very generically, in absence of context, the EncryptMessage
is meant
to encrypt data for some entity for which you have a cert (only uses
crypto) and works offline, the CryptEncryptMessage
can only be used
between a client and a server after they have established a security
context using InitializeSecurityContext/AcceptSecurityContext
.
如果想了解更多,请参考:Difference between CryptEncryptMessage EncryptMessage(Negotiate)
我正在寻找 windows 密码学的不同解决方案,偶然发现了这两个库。它们的头文件是 Wincrypt.h
和 Sspi.h
。它们似乎都提供加密和解密例程:CryptEncryptMessage
和EncryptMessage
,它们都提供加密上下文句柄并且非常相似。那我用它们做什么?
P.S。还有 CNG,但据我了解,它只是 wincrypt 的继任者,很快就会被弃用。
根据 MSDN,EncryptMessage
函数加密消息以提供隐私。 EncryptMessage
允许应用程序在所选机制支持的加密算法中进行选择。
此函数仅作为 SASL 机制可用。
例如,如果您想在 Windows 域环境中使用 Microsoft 的安全支持提供程序接口 (SSPI) 在两个实体之间发送加密和签名的消息(在 C++ 中)。那么您可以使用 EncryptMessage
.
但是CryptEncryptMessage
是CAPI2 PKI加密API.
Very generically, in absence of context, the
EncryptMessage
is meant to encrypt data for some entity for which you have a cert (only uses crypto) and works offline, theCryptEncryptMessage
can only be used between a client and a server after they have established a security context usingInitializeSecurityContext/AcceptSecurityContext
.
如果想了解更多,请参考:Difference between CryptEncryptMessage EncryptMessage(Negotiate)