我有一个富客户端应用程序,它连接到一组支持Web服务,其中连接由SSL保护。我需要确定用于实际SSL流的加密的“强度”,以便将此信息显示给最终用户。
我的理解是客户端和服务器将协商它们之间的对称加密方法(SSL / TLS),具有不同的加密级别(40,56,128,256)。有什么办法可以在C#代码中检测HttpWebRequest / ServicePoint /中使用哪种模式?
答案 0 :(得分:1)
由于您已经建立了SslStream stream
,因此可以使用以下内容:
stream.CipherAlgorithm //to get the algorithm that is used
stream.CipherStrength //to get the strength of the cipher algorithm
您可以找到更多信息here。
答案 1 :(得分:1)
这扩展了@Alex的帖子,显然添加了你自己的错误处理
System.Net.Sockets.TcpClient TC = new System.Net.Sockets.TcpClient();
TC.Connect("mail.google.com", 443);
using (System.Net.Security.SslStream Ssl = new System.Net.Security.SslStream(TC.GetStream()))
{
Ssl.AuthenticateAsClient("mail.google.com");
Console.WriteLine(Ssl.CipherAlgorithm);
Console.WriteLine(Ssl.CipherStrength);
}
TC.Close();
我认为您不能直接从Web服务访问SSL信息,您必须使用此帮助程序代码直接与主机通信。