Encryption 交换对称密钥

Encryption 交换对称密钥,encryption,encryption-asymmetric,public-key-encryption,encryption-symmetric,Encryption,Encryption Asymmetric,Public Key Encryption,Encryption Symmetric,我有一个WinForms客户端,它正在向web服务发送加密数据。WinForms客户端创建对称RijndaelManaged sessionKey,还具有硬编码的RSA非对称公钥 我正在使用EncryptedXml类,这使打包数据变得非常容易 Web服务具有硬编码的私钥和公钥,可以成功地解密SessionKey,然后使用它来解密我发送的实际数据 这几乎是由EncryptedData类自动处理的 我遇到的问题是,在Web服务端,当我想要回复时,我似乎不知道如何获取发送过来的SessionKey 在

我有一个WinForms客户端,它正在向web服务发送加密数据。WinForms客户端创建对称RijndaelManaged sessionKey,还具有硬编码的RSA非对称公钥

我正在使用EncryptedXml类,这使打包数据变得非常容易

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

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

我遇到的问题是,在Web服务端,当我想要回复时,我似乎不知道如何获取发送过来的SessionKey

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


您知道如何获取此未加密密钥吗?

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

你应该没事的。请注意,对于所有不太重要的安全警告,这里所表示的代码既易受中间人攻击,又有利于扩展Oracle攻击。不过,它应该有助于防止大多数窃听企图


最后,重用会话密钥也被认为是非常糟糕的安全实践。如果你重用它,至少考虑使用IV,例如每个跟踪消息的计数器。

我们需要比它过去更多的信息。代码片段?对RSA密钥进行硬编码也是不好的做法。为什么不从windows密钥存储中读取证书并使用这些证书进行加密/解密?这几乎是MSDN上的代码的逐字翻译:在解密方法中,调用DecryptDocument后,我可以看到我的数据,但是我如何获取加密方法中使用的SessionKey以便回复发件人?为什么不简单地使用SSL?