C# 进行双向请求数据加密的最佳方法

C# 进行双向请求数据加密的最佳方法,c#,encryption,asp.net-web-api,C#,Encryption,Asp.net Web Api,我想要加密请求内容以防止通过WebAPI请求发送原始数据,所以我必须实现双向加密 在asp.net web api中,哪种加密算法适合加密高速率的请求,以及如何实现它?一种简单的方法,不需要编码,就是使用HTTPS而不是HTTP。最好的方法在很大程度上是一种意见,但我选择的标准设计如下: 客户端(打电话的对象)获得带有私钥的客户端证书。 客户端获取服务器网站证书的公钥。 客户端获取服务器加密证书的公钥 服务器(接收呼叫的对象)获取客户端证书公钥。 服务器获取网站证书的私钥和公钥(在IIS中绑定)

我想要加密请求内容以防止通过WebAPI请求发送原始数据,所以我必须实现双向加密


在asp.net web api中,哪种加密算法适合加密高速率的请求,以及如何实现它?

一种简单的方法,不需要编码,就是使用HTTPS而不是HTTP。

最好的方法在很大程度上是一种意见,但我选择的标准设计如下: 客户端(打电话的对象)获得带有私钥的客户端证书。 客户端获取服务器网站证书的公钥。 客户端获取服务器加密证书的公钥

服务器(接收呼叫的对象)获取客户端证书公钥。 服务器获取网站证书的私钥和公钥(在IIS中绑定)。 服务器获取服务器加密证书的私钥

在您的代码中,在服务器上验证请求时,需要显示精确(指纹)和有效(您的逻辑或X509Certificate2进行验证,但要注意CRL/OCSP(如果您关心性能)

在客户端上,验证服务器网站证书(同样,指纹加验证)

然后在客户端上,作为发送有效负载之前的最后一步,使用服务器加密证书的公钥来封装消息。 在服务器上,添加ActionFilterAttribute(更干净)或重构操作以接收字符串(更程序化),然后使用服务器加密证书的私钥来打开消息。 作为响应的最后一步,使用客户端证书的公钥来封装消息

如果你真的很感兴趣,你也可以用一些其他的证书来签署消息,但那真的是一种默默无闻


这样,如果无法在两个系统上访问私钥,就永远无法完全解密聊天。

“低方式加密”?与“高速加密”相比?请尝试使用TLS。考虑到MiTM工具的扩散,这一点再也不能被认为是安全的了。