哈希和签名算法

以下算法可计算哈希数字签名。 Microsoft基、强加密提供程序和增强型加密提供程序支持上述每一种算法。 这些算法的内部详情超出了本文档的范围。 有关其他源的列表,请参阅有关加密的其他文档

算法 说明
Cipher Block Chaining (CBC) MAC
Microsoft 提供程序实现的算法 (CALG_MAC) 之一是块密码消息身份验证代码 (MAC)。 此方法使用块密码加密基数据,然后使用最后一个加密块作为哈希 值。 用于生成 MAC 的加密算法是创建会话密钥时指定的加密算法。
HMAC
由Microsoft提供程序实现的算法 (CALG_HMAC)。 此算法还使用对称密钥来创建 哈希,但比简单的密码块链 (CBC) MAC 算法复杂得多。 它可以与任何迭代的加密哈希算法(如 MD5 或 SHA-1)一起使用。 有关详细信息,请参阅创建 HMAC
MD2、MD4 和 MD5
这些哈希算法都是由 RSA 数据安全公司开发的。并且这些算法是按先后顺序开发的。 三者都生成 128 位哈希值。 众所周知,这三者都有弱点,仅应在需要兼容性的情况下使用。 对于新代码,我们建议使用 SHA-2 系列哈希。
这些算法众所周知,可以在任何有关加密的参考文献中详细查阅。
消息验证码 (MAC)
MAC 算法类似于哈希算法,但使用对称(会话)密钥计算。 需要原始会话密钥才能重新计算哈希值。 重新计算的哈希值用于验证基本数据未被更改。 这些算法有时称为键控哈希算法。 若要查看哪些 Microsoft 提供程序支持 MAC,请参阅 Microsoft 加密服务提供程序
安全哈希算法 (SHA-1)
这种散列算法由美国国家标准与技术研究院 (NIST) 和美国国家安全局 (NSA) 开发。 此算法已开发用于 DSA(数字签名算法)或 DSS(数字签名标准)。 此算法生成 160 位哈希 值。 已知 SHA-1 存在弱点,只有在需要兼容的情况下才能使用。 对于新代码,我们建议使用 SHA-2 系列哈希。
安全哈希算法 - 2 (SHA-2)
这种散列算法作为 SHA-1 的后续算法,是由美国国家标准与技术 研究院 (NIST) 和国家安全局 (NSA) 共同开发的。 它具有四个变体(SHA-224、SHA-256、SHA-384 和 SHA-512),这些变体根据其输出的位数进行命名。 其中,SHA-256、SHA-384 和 SHA-512 在 Microsoft AES 加密提供程序中实现。
SSL3 客户端授权算法
此算法用于 SSL3 客户端身份验证。 在 SSL3 协议中,MD5 哈希和 SHA 哈希的串联是使用 RSA 私钥进行签名的。 CryptoAPI 2.0 和 Microsoft Base 及增强型加密提供程序通过哈希类型 CALG_SSL3_SHAMD5 支持此功能。 有关详细信息,请参阅创建 CALG_SSL3_SHAMD5 哈希