.net - 在客户端中加密服务器解密

时间:2018-03-31 18:59:56

标签: c# encryption encryption-asymmetric

我正在使用基于令牌的身份验证。我的Web服务器将生成并加密令牌。我希望客户端解密令牌以读取某些有效负载信息。

我应该用什么算法来实现这个目标?

根据我的理解,如果我使用RSA,我可以使用私钥在c#中解密,而加密必须从另一方面进行,因此这不符合我的方案。是否有其他不对称算法或方法来实现这一目标?

  • 服务器加密 - 私钥。
  • 客户端解密 - 公钥。

1 个答案:

答案 0 :(得分:1)

  

是否有任何其他不对称算法或方法来实现这一点,请建议。

我想纠正您对非对称加密的理解。非对称加密允许任何拥有公钥的人向拥有私钥的任何人发送秘密消息。由于公钥是公共密钥,因此非对称加密允许许多可能的发件人向一些特殊收件人发送私人邮件。

  

我的网络服务器会生成并加密令牌。我希望客户端解密令牌以读取某些有效负载信息。

在这种情况下,当服务器向客户端发送秘密消息时,如果使用非对称加密,则服务器将使用公钥进行加密,客户端将使用私钥进行解密。

  

服务器加密 - 私钥。客户端解密 - 公钥。

这是不正确的。在非对称加密中,公钥执行加密,私钥执行解密。

您可能正在考虑的是数字签名的邮件。在这种情况下,发送方使用私钥对消息进行签名,接收方使用公钥验证签名。数字签名的消息并不是秘密,而加密的消息是秘密的。

  

是否有任何其他不对称算法或方法来实现这一点,请建议。

由于您的用例并不完全清楚,我将在那里停止答案,并将其留在纠正您对非对称加密的理解上。您可能需要对称加密或数字签名。我鼓励你再问另一个StackOverflow问题,作为这个问题的后续问题。

最后请注意,我将引荐您Internet Security Glossary。特别是,名为" $ asymmetric cryptography"有一个关于如何使用非对称加密技术来创建加密,数字签名和密钥协议算法的精确而简短的描述。"

来自您的其他(不幸的是暂停)问题Protecting JWT Signing and Encryption C# Solution,听起来您需要以下内容:

  1. 将有效负载从服务器发送到客户端。
  2. 只有客户端才能读取有效负载,因为它已加密。
  3. 客户端可以验证谁发送了有效负载,因为它已签名。
  4. 推荐的方法是sign-and-then-encrypt。如果您想对两者使用非对称加密:

    1. 使用私有密钥来签署有效负载,
    2. 然后使用公钥加密签名的有效负载。