国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

使用SSL確保通信中的數(shù)據(jù)安全

2019-11-17 01:26:47
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
使用SSL確保通信中的數(shù)據(jù)安全

aaa

bbb

        #region Server        /// <summary>        /// 用于保存非對(duì)稱加密(數(shù)字證書)的公鑰        /// </summary>        PRivate string publicKey = string.Empty;        /// <summary>        /// 用于保存非對(duì)稱加密(數(shù)字證書)的私鑰        /// </summary>        private string pfxKey = string.Empty;        ///===========================        ///服務(wù)端代碼        ///===========================        /// <summary>        /// 用于跟客戶端通信的Socket        /// </summary>        private Socket serverCommunicateSocket;        /// <summary>        /// 定義接收緩存塊的大小        /// </summary>        private static int serverBufferSize = 1024;        /// <summary>        /// 緩存塊        /// </summary>        byte[] bytesReceivedFromClient = new byte[serverBufferSize];        /// <summary>        /// 密鑰K        /// </summary>        private string key = string.Empty;        StringBuilder messageFromClient = new StringBuilder();        /// <summary>        /// 開啟服務(wù)器        /// </summary>        private void btnStartServer_Click(object sender, EventArgs e)        {            //先生成數(shù)字證書(模擬,及非對(duì)稱密鑰對(duì))            RSAKeyInit();            //負(fù)責(zé)偵聽            StartListen();        }        void RSAKeyInit()        {            RSAProcessor.CreateRSAKey(ref publicKey, ref pfxKey);            //本例中,先指定一對(duì)公鑰、私鑰            publicKey = "<RSAKeyValue><Modulus>httkQLJ52ODWcIoDont7izs0Kn8OIr3IJ+Q5DC3RgzojjphvHN/5N4miVN+U0fz405o53CRP0PUghyq0rbHZNj7ZW1M1Vh/ne4lDvP/q44QerhYewTUwT92tHj8GyYxvegkp98vT95YkjFJRByQCXrhKBW64ziqnDL2n9LeUPBM=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";            pfxKey = "<RSAKeyValue><Modulus>httkQLJ52ODWcIoDont7izs0Kn8OIr3IJ+Q5DC3RgzojjphvHN/5N4miVN+U0fz405o53CRP0PUghyq0rbHZNj7ZW1M1Vh/ne4lDvP/q44QerhYewTUwT92tHj8GyYxvegkp98vT95YkjFJRByQCXrhKBW64ziqnDL2n9LeUPBM=</Modulus><Exponent>AQAB</Exponent><P>vZPGLPJBxtjhoSSt7OXvAqalRU8IXmPbojk7/j9f1DW1DRCLwof6MjJqt4uAY9D/L/GPJh9zIddeVM3lkr9s6Q==</P><Q>tht1LlLi7XQJHsVfgJ1ewBjjOOzQSfmO+RTClWXKquuup4pblF51jSDK+5VlyibD5chzeO1mxjvzkEfcJNgTmw==</Q><DP>kZXfdfrhKqy5sX+ylaAKydViTHSiL6KuM8mSWfEfTZ+lF5BiVBUKvevb6nKWOZFxt8bhMNysFQwI5EVujSC2QQ==</DP><DQ>hEsqM77vMEWNopcMLCkm/jKWT3JqVnM/lF+qhFHwi36v4PK4WO7OQvpBu8bqrZK/2ZxnlsAQW46OAJDTsshuZQ==</DQ><InverseQ>BfZy74k5EqN6l7faYHSYvqWuRMSWwp4dCXF43uT8wcf3kciYxIkbaNNY56ulJbCAN2SyDQkD3PF+Sp3qtJZ/Vg==</InverseQ><D>ADbI6fFekCGLNZKCfveDMq1dX9PjydpTPvz1ujc4ZeTpuYg0ZO9WDeiCAXB5Y/vqySstfFPybHp3Gr/OmZf2qEbKQlK6Ztms3R30rnqk/2/XHtAm5AeVLhf03q/+76mtvgtUTspgth55JpIKGYNKcQTJBbgepbyVT26YjMwrMoE=</D></RSAKeyValue>";        }        void StartListen()        {            ipEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.1.103"), 8009);            //負(fù)責(zé)偵聽的socket            Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            listenSocket.Bind(iep);            listenSocket.Listen(50);            listenSocket.BeginAccept(new AsyncCallback(this.Accepted), listenSocket);            ListBoxShow("開始偵聽...");            btnStartServer.Enabled = false;        }        /// <summary>        /// 負(fù)責(zé)客戶端的連接,并開始將自己置于接收狀態(tài)        /// </summary>        void Accepted(IAsyncResult result)        {            Socket listenSocket = result.AsyncState as Socket;            //初始化和客戶端進(jìn)行通信的socket            serverCommunicateSocket = listenSocket.EndAccept(result);            ListBoxShow("有客戶端連接到...");            serverCommunicateSocket.BeginReceive(bytesReceivedFromClient, 0, serverBufferSize, SocketFlags.None,                new AsyncCallback(this.ReceivedFromClient), null);        }        /// <summary>        /// 負(fù)責(zé)處理接收自客戶端的數(shù)據(jù)        /// </summary>        void ReceivedFromClient(IAsyncResult result)        {            int read = serverCommunicateSocket.EndReceive(result);            if (read > 0)            {                messageFromClient.Append(UTF32Encoding.Default.GetString(bytesReceivedFromClient, 0, read));                //處理并顯示數(shù)據(jù)                ProcessAndShowInServer();                serverCommunicateSocket.BeginReceive(bytesReceivedFromClient, 0, serverBufferSize, 0,                    new AsyncCallback(ReceivedFromClient), null);            }        }        private void ProcessAndShowInServer()        {            string msg = messageFromClient.ToString();            //如果接收到<EOF>表示完成一次,否則繼續(xù)將自己置于接收狀態(tài)            if (msg.IndexOf("<EOF>") > -1)            {                //如果客戶端發(fā)送Key,則負(fù)責(zé)初始化Key                if (msg.IndexOf("<KEY>") > -1)                {                    //用私鑰解密發(fā)送過(guò)來(lái)的Key信息                    key = RSAProcessor.RSADecrypt(pfxKey, msg.Substring(0, msg.Length - 10));                    ListBoxShow(string.Format("接收到客戶端密鑰:{0}", key));                }                else                {                    //解密SSL通道中發(fā)送過(guò)來(lái)的密文并顯示                    ListBoxShow(string.Format("接收到客戶端消息:{0}", RijndaelProcessor.DecryptString(msg.Substring(0, msg.Length - 5), key)));                }            }            messageFromClient.Clear();        }        /// <summary>        /// 負(fù)責(zé)向客戶端發(fā)送數(shù)據(jù)        /// </summary>        private void btnStartSendToClient_Click(object sender, EventArgs e)        {            //加密消息體            string msg = string.Format("{0}{1}", RijndaelProcessor.EncryptString(DateTime.Now.ToString(), key), "<EOF>");            RijndaelProcessor.DecryptString(msg.Substring(0, msg.Length - 5), key);            byte[] msgBytes = UTF32Encoding.Default.GetBytes(msg);            serverCommunicateSocket.BeginSend(msgBytes, 0, msgBytes.Length, SocketFlags.None, null, null);            ListBoxShow(string.Format("發(fā)送:{0}", msg));        }        /// <summary>        /// 界面顯示        /// </summary>        private void ListBoxShow(string argMsg)        {            listBoxServer.BeginInvoke(new Action(() =>            {                listBoxServer.Items.Add(argMsg);            }));        }        #endregion
        #region Client        /// <summary>        /// 用于保存非對(duì)稱加密(數(shù)字證書)的公鑰        /// </summary>        private string publicKey = "<RSAKeyValue><Modulus>httkQLJ52ODWcIoDont7izs0Kn8OIr3IJ+Q5DC3RgzojjphvHN/5N4miVN+U0fz405o53CRP0PUghyq0rbHZNj7ZW1M1Vh/ne4lDvP/q44QerhYewTUwT92tHj8GyYxvegkp98vT95YkjFJRByQCXrhKBW64ziqnDL2n9LeUPBM=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";        ///==============================        /// 客戶端代碼        ///==============================        ///用于跟蹤服務(wù)器通信的socket        private Socket clientCommunicateSocket;        /// <summary>        /// 用于暫存接收到的字符串        /// &l
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 福贡县| 余江县| 屯留县| 乌兰察布市| 普宁市| 历史| 涡阳县| 沙河市| 洛扎县| 永嘉县| 百色市| 南丰县| 洛宁县| 谷城县| 海晏县| 颍上县| 贵港市| 城固县| 太白县| 措美县| 莱州市| 阿巴嘎旗| 通辽市| 个旧市| 宜兰县| 浮山县| 新丰县| 河间市| 曲靖市| 庄河市| 双牌县| 保亭| 河津市| 老河口市| 洛隆县| 阳山县| 稷山县| 响水县| 报价| 彰化县| 汤阴县|