向其他用户发送加密消息的最简单的方法是发送消息(随机会话密钥加密)以及会话密钥(用接收者的交换公钥加密)。这些是发送加密会话密钥的步骤:
1.使用CryptGenKey功能创建一个随机会话密钥。
2.使用会话密钥加密消息。(此过程在加密和解密数据部分中讨论。)
3.将会话密钥导出到具有CryptExportKey功能的密钥blob中,指定密钥用目标用户的密钥交换公钥加密。
4.将加密消息和加密密钥blob发送给目标用户。
5.目的用户应使用CryptImportKey功能将密钥blob导入他/她的CSP。如果在步骤3中指定了目标用户的密钥交换公钥,则会自动解密会话密钥。
6.目的用户可以按照加密和解密数据中讨论的步骤,使用会话密钥对消息进行解密。
下图显示了如何使用以下过程发送加密消息:
这种方法容易受到至少一种常见形式的攻击。窃听者可以获取更多加密消息和加密密钥之一的副本。然后,在稍后的时间,窃听者可以将这些消息中的一个发送到接收器,并且接收器将无法知道消息没有直接来自原始发送者。可以通过对所有消息进行时间戳或使用序列号来减少此风险。使用三相密钥交换协议将完全消除这个问题。请参阅示例三相交换协议部分。