亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#實現數據包加密與解密實例詳解

2020-01-24 02:37:08
字體:
來源:轉載
供稿:網友

在很多項目中,為了安全安全考慮,需要對數據包進行加密處理,本文實例所述的即為C#加密代碼,在應用開發中有很大的實用價值。說起數據包加密,其實對C#編程者來說,應該是一個基礎的技巧,是進行C#程序設計人員必須要掌握的技能。

C#實現加密功能的核心代碼如下:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Threading;using System.Net;using System.Net.Sockets;using System.Net.NetworkInformation;using System.Security.Cryptography;using System.IO;namespace EncryptDataReport{  public partial class Form1 : Form  {    public Form1()    {      InitializeComponent();    }    #region 定義全局對象及變量    private IPEndPoint Server;//服務器端    private IPEndPoint Client;//客戶端    private Socket mySocket;//套接字    private EndPoint ClientIP;//IP地址    byte[] buffer, data;//接收緩存    bool blFlag = true;//標識是否第一次發送信息    bool ISPort = false;//判斷端口打開    int SendNum1, ReceiveNum1, DisNum1; //記錄窗體加載時的已發送/已接收/丟失的數據報    int SendNum2, ReceiveNum2, DisNum2; //記錄當前已發送/已接收/丟失的數據報    int SendNum3, ReceiveNum3, DisNum3; //緩存已發送/已接收/丟失的數據報    int port;//端口號    #endregion    //異步接收信息    private void StartLister(IAsyncResult IAResult)    {      int Num = mySocket.EndReceiveFrom(IAResult, ref ClientIP);      string strInfo = Encoding.Unicode.GetString(buffer, 0, Num);      rtbContent.AppendText("用戶" + ClientIP.ToString());      rtbContent.AppendText(":");      rtbContent.AppendText("/r/n");      rtbContent.AppendText(DecryptDES(strInfo, "mrsoftxk"));//對接收到的信息進行解密      rtbContent.AppendText("/r/n");      mySocket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref ClientIP, new AsyncCallback(StartLister), null);    }    //初始化已發送、已接收和丟失的數據報    private void Form1_Load(object sender, EventArgs e)    {      if (blFlag == true)      {        IPGlobalProperties NetInfo = IPGlobalProperties.GetIPGlobalProperties();        UdpStatistics myUdpStat = null;        myUdpStat = NetInfo.GetUdpIPv4Statistics();        SendNum1 = Int32.Parse(myUdpStat.DatagramsSent.ToString());        ReceiveNum1 = Int32.Parse(myUdpStat.DatagramsReceived.ToString());        DisNum1 = Int32.Parse(myUdpStat.IncomingDatagramsDiscarded.ToString());      }    }    //設置端口號    private void button4_Click(object sender, EventArgs e)    {      try      {        port = Convert.ToInt32(textBox4.Text);        CheckForIllegalCrossThreadCalls = false;        buffer = new byte[1024];        data = new byte[1024];        Server = new IPEndPoint(IPAddress.Any, port);        Client = new IPEndPoint(IPAddress.Broadcast, port);        ClientIP = (EndPoint)Server;        mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);        mySocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);        mySocket.Bind(Server);        mySocket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref ClientIP, new AsyncCallback(StartLister), null);        ISPort = true;//打開指定端口號      }      catch { }    }    //發送信息    private void button2_Click(object sender, EventArgs e)    {      if (ISPort == true)//判斷是否有打開的端口號      {        IPGlobalProperties NetInfo = IPGlobalProperties.GetIPGlobalProperties();        UdpStatistics myUdpStat = null;        myUdpStat = NetInfo.GetUdpIPv4Statistics();        try        {          if (blFlag == false)//非第一次發送          {            SendNum2 = Int32.Parse(myUdpStat.DatagramsSent.ToString());            ReceiveNum2 = Int32.Parse(myUdpStat.DatagramsReceived.ToString());            DisNum2 = Int32.Parse(myUdpStat.IncomingDatagramsDiscarded.ToString());            textBox1.Text = Convert.ToString(SendNum2 - SendNum3);            textBox2.Text = Convert.ToString(ReceiveNum2 - ReceiveNum3);            textBox3.Text = Convert.ToString(DisNum2 - DisNum3);          }          SendNum2 = Int32.Parse(myUdpStat.DatagramsSent.ToString());          ReceiveNum2 = Int32.Parse(myUdpStat.DatagramsReceived.ToString());          DisNum2 = Int32.Parse(myUdpStat.IncomingDatagramsDiscarded.ToString());          SendNum3 = SendNum2; //記錄本次的發送數據報          ReceiveNum3 = ReceiveNum2;//記錄本次的接收數據報          DisNum3 = DisNum2; //記錄本次的丟失數據報          if (blFlag == true)//第一次發送          {            textBox1.Text = Convert.ToString(SendNum2 - SendNum1);            textBox2.Text = Convert.ToString(ReceiveNum2 - ReceiveNum1);            textBox3.Text = Convert.ToString(DisNum2 - DisNum1);            blFlag = false;          }        }        catch (Exception ex)        {          MessageBox.Show(ex.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);        }        string str = EncryptDES(rtbSend.Text, "mrsoftxk");//加密要發送的信息        data = Encoding.Unicode.GetBytes(str);        mySocket.SendTo(data, data.Length, SocketFlags.None, Client);        rtbSend.Text = "";      }      else      {        MessageBox.Show("請首先打開端口!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);        button4.Focus();      }    }    //清屏    private void button1_Click(object sender, EventArgs e)    {      rtbContent.Clear();    }    //退出    private void button3_Click(object sender, EventArgs e)    {      Application.Exit();    }    //按<Ctrl+Enter>組合鍵發送信息    private void rtbSend_KeyDown(object sender, KeyEventArgs e)    {      //當同時按下Ctrl和Enter時,發送消息      if (e.Control && e.KeyValue == 13)      {        e.Handled = true;        button2_Click(this, null);      }    }    //聊天記錄隨時滾動    private void rtbContent_TextChanged(object sender, EventArgs e)    {      rtbContent.ScrollToCaret();    }    private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };//密鑰    #region DES加密字符串    ///<summary>      ///DES加密字符串      ///</summary>      ///<param name="str">待加密的字符串</param>      ///<param name="key">加密密鑰,要求為8位</param>      ///<returns>加密成功返回加密后的字符串,失敗返回源字符串</returns>      public string EncryptDES(string str, string key)    {      try      {        byte[] rgbKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));        byte[] rgbIV = Keys;        byte[] inputByteArray = Encoding.UTF8.GetBytes(str);        DESCryptoServiceProvider myDES = new DESCryptoServiceProvider();        MemoryStream MStream = new MemoryStream();        CryptoStream CStream = new CryptoStream(MStream, myDES.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);        CStream.Write(inputByteArray, 0, inputByteArray.Length);        CStream.FlushFinalBlock();        return Convert.ToBase64String(MStream.ToArray());      }      catch      {        return str;      }    }    #endregion    #region DES解密字符串    ///<summary>      ///DES解密字符串      ///</summary>      ///<param name="str">待解密的字符串</param>      ///<param name="key">解密密鑰,要求為8位,和加密密鑰相同</param>      ///<returns>解密成功返回解密后的字符串,失敗返源字符串</returns>      public string DecryptDES(string str, string key)    {      try      {        byte[] rgbKey = Encoding.UTF8.GetBytes(key);        byte[] rgbIV = Keys;        byte[] inputByteArray = Convert.FromBase64String(str);        DESCryptoServiceProvider myDES = new DESCryptoServiceProvider();        MemoryStream MStream = new MemoryStream();        CryptoStream CStream = new CryptoStream(MStream, myDES.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);        CStream.Write(inputByteArray, 0, inputByteArray.Length);        CStream.FlushFinalBlock();        return Encoding.UTF8.GetString(MStream.ToArray());      }      catch      {        return str;      }    }    #endregion  }}

本例備有詳細的注釋,對于開發者而言應該不難理解,讀者可以根據自身項目需要改進本例代碼以符合自身應用需求。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线观看网站| 欧美日韩国产在线播放| 久久久综合免费视频| 精品久久久久久久久久ntr影视| 亚洲国产天堂久久综合| 欧美极品美女电影一区| 国产97免费视| 亚洲精品久久久久中文字幕二区| 欧美老女人性生活| 久久精品国产99国产精品澳门| 日韩高清电影好看的电视剧电影| www.色综合| www.国产精品一二区| 久久精品国产综合| 菠萝蜜影院一区二区免费| 亚洲色图13p| 日韩精品视频免费在线观看| 久久久91精品国产一区不卡| 精品美女久久久久久免费| 久久久久久中文| 亚洲va久久久噜噜噜| 麻豆乱码国产一区二区三区| 国产精品专区一| 最新中文字幕亚洲| 日韩经典中文字幕在线观看| 亚洲欧美国产视频| 91精品国产91久久久久久不卡| 国产婷婷成人久久av免费高清| 日韩亚洲精品视频| 亚洲人成电影网站色www| 日韩中文第一页| 91精品国产沙发| 精品国产自在精品国产浪潮| 亚洲午夜精品视频| 亚洲天堂av综合网| 成人国产精品久久久| 日本欧美中文字幕| 揄拍成人国产精品视频| 久久久久国色av免费观看性色| 精品国产自在精品国产浪潮| 国产91在线播放精品91| 日韩一区二区福利| 欧美日韩国产一区二区| 在线日韩日本国产亚洲| 欧美丝袜第一区| 久久夜色撩人精品| 国产ts人妖一区二区三区| 欧美另类99xxxxx| 欧美日韩在线看| 国产精品爽黄69天堂a| 精品福利在线看| 亚洲女人天堂色在线7777| 欧洲成人在线观看| 国产精品扒开腿爽爽爽视频| 国产xxx69麻豆国语对白| 91中文字幕在线| 成人欧美在线视频| 51午夜精品视频| 亚州av一区二区| 亚洲天堂av女优| 热99在线视频| 92看片淫黄大片欧美看国产片| 亚洲无线码在线一区观看| 国产精品青青在线观看爽香蕉| 免费99精品国产自在在线| 人九九综合九九宗合| 亚洲最大的成人网| 69国产精品成人在线播放| 亚洲性生活视频在线观看| 亚洲精品国产精品国自产在线| 97av视频在线| 亚洲综合自拍一区| 日韩乱码在线视频| 欧美黄色片在线观看| 2025国产精品视频| 亚洲欧美日韩区| 日韩欧美国产骚| 亚洲精品欧美一区二区三区| 国产成人在线一区| 欧美国产日本高清在线| 国产精品高清在线| 亚洲片国产一区一级在线观看| 韩国欧美亚洲国产| 国产成人精品优优av| 国产精品伦子伦免费视频| 欧美在线激情视频| 5278欧美一区二区三区| 国产精品久久久久久久久借妻| 国产精品亚洲激情| 欧美又大又硬又粗bbbbb| 国产激情视频一区| 97香蕉久久超级碰碰高清版| 亚洲成avwww人| 欧美床上激情在线观看| 91在线观看免费高清完整版在线观看| 亚洲男人天堂2019| 海角国产乱辈乱精品视频| 国产偷亚洲偷欧美偷精品| 久久精品视频免费播放| 欧美性xxxxx| 日韩欧美国产激情| 日韩成人av网址| 精品久久久久久电影| 高清日韩电视剧大全免费播放在线观看| 久久亚洲欧美日韩精品专区| 亚洲一级一级97网| 亚洲精品97久久| 国产精品国产三级国产aⅴ9色| 国a精品视频大全| 日本高清不卡在线| 国产国语刺激对白av不卡| 午夜精品久久久久久久久久久久久| 91天堂在线观看| 中文字幕免费精品一区高清| 亚洲福利在线视频| 欧美影院在线播放| 欧美亚洲激情在线| 亚洲美女av电影| 久久久国产精彩视频美女艺术照福利| 97精品国产91久久久久久| 清纯唯美亚洲综合| 国产成人高清激情视频在线观看| 国产激情视频一区| 成人黄在线观看| 色伦专区97中文字幕| 国产aⅴ夜夜欢一区二区三区| 中文字幕国内精品| 欧美xxxwww| 久久综合五月天| 欧美性猛交xxxx| 亚洲精品99999| 中文字幕亚洲天堂| 欧亚精品在线观看| 欧美日韩午夜视频在线观看| 欧美日韩在线免费观看| 日本19禁啪啪免费观看www| 色综合色综合久久综合频道88| 激情久久av一区av二区av三区| 国产精品在线看| 欧美性猛交xxxx偷拍洗澡| 国产精品pans私拍| 欧美美女18p| 欧美孕妇孕交黑巨大网站| 欧美成人手机在线| 欧美一级成年大片在线观看| 色妞在线综合亚洲欧美| 日韩精品免费视频| 久热精品视频在线观看| 午夜精品久久久久久久久久久久| 亚洲男女性事视频| 超碰日本道色综合久久综合| 日韩在线视频免费观看| 国产精品九九久久久久久久| 日韩av一区二区在线观看| 欧美激情国产高清| 国产精品久久久久久久久久东京| 精品国产一区av| 91免费人成网站在线观看18| 国外色69视频在线观看| 欧美华人在线视频| 亚洲国产欧美在线成人app| 亚洲日韩中文字幕| 久久影院资源站| 日韩在线高清视频|