.NET中加密和解密的实现方法2 - 中国WEB开发者网络 (http://www.webasp.net) -- 技术教程 (http://www.webasp.net/article/) --- .NET中加密和解密的实现方法2 (http://www.webasp.net/article/18/17137.htm) |
| -- 作者:未知 -- 发布日期: 2005-03-23 |
| 使用私有密钥解密该文档,这是唯一可以解密的密钥,并且没有通过网络传递。
不对称算法比对称算法计算的花费多、速度慢。因此我们不希望在线对话中使用不对称算法加密所有信息。相反,我们使用对称算法。下面的例子中我们使用不对称加密来加密对称密钥。接着就使用对称算法加密了。实际上安全接口层(SSL)建立服务器和浏览器之间的安全对话使用的就是这种工作方式。 示例是一个TCP程序,分为服务器端和客户端。服务器端的工作流程是: 从客户端接收公共密钥。 使用公共密钥加密未来使用的对称密钥。 将加密了的对称密钥发送给客户端。 给客户端发送使用该对称密钥加密的信息。 代码如下: namespace com.billdawson.crypto { public class CryptoServer { private const int RSA_KEY_SIZE_BITS = 1024; private const int RSA_KEY_SIZE_BYTES = 252; private const int TDES_KEY_SIZE_BITS = 192; public static void Main(string[] args) { int port; string msg; TcpListener listener; TcpClient client; SymmetricAlgorithm symm; RSACryptoServiceProvider rsa; //获取端口 try { port = Int32.Parse(args[0]); msg = args[1]; } catch { Console.WriteLine(USAGE); return; } //建立监听 try { listener = new TcpListener(port); listener.Start(); Console.WriteLine("Listening on port {0}...",port); client = listener.AcceptTcpClient(); Console.WriteLine("connection...."); } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); return; } try { rsa = new RSACryptoServiceProvider(); rsa.KeySize = RSA_KEY_SIZE_BITS; // 获取客户端公共密钥 rsa.ImportParameters(getClientPublicKey(client)); symm = new TripleDESCryptoServiceProvider(); symm.KeySize = TDES_KEY_SIZE_BITS; |
| webasp.net |