0

我有一个将加密数据发送到 Web 服务的 WinForms 客户端。WinForms 客户端创建一个 Symmetric RijndaelManaged sessionKey 并且还有一个“硬编码的 RSA 非对称公钥”。

我正在使用 EncryptedXml 类,它可以很容易地打包我的数据。

Web 服务具有“硬编码”的私钥和公钥,并且可以成功解密 SessionKey,然后使用它来解密我发送的实际数据。

这几乎是由 EncryptedData 类自动处理的。

我遇到的问题是,在 Web 服务端,当我想回复时,我似乎无法弄清楚如何获取发送过来的 SessionKey。

在我对 Web 服务端进行任何解密之前,我可以看到加密的会话密钥,但在我解密 XML 之后,它就消失了(因此我没有任何会话密钥用于我的回复)。

任何想法如何获得这个未加密的密钥?

4

1 回答 1

0

您看不到会话密钥的原因是它被自动解密和使用。通常它被认为是 XML 的一部分。如果你想得到它,只需使用

encryptedxml.decryptencryptedkey

你应该没事的。请注意,对于所有不太重要的安全警告,此处显示的代码易受中间人攻击和较小范围的填充预言攻击。不过,它应该有助于防止大多数窃听尝试。

最后,重用会话密钥也被认为是非常糟糕的安全做法。如果您重复使用它,至少考虑使用 IV,例如每个后续消息的计数器。

于 2011-06-21T20:46:56.220 回答