Csharp/C Sharp by API/System.Security.Cryptography/CryptoStream

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

new CryptoStream

<source lang="csharp"> /* C# Network Programming by Richard Blum Publisher: Sybex ISBN: 0782141765

  • /

using System; using System.IO; using System.Net; using System.Net.Sockets; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Soap; using System.Security; using System.Security.Cryptography; using System.Text; public class CryptoDataSender {

  private void SendData(NetworkStream strm, SerialEmployee emp)
  {
     IFormatter formatter = new SoapFormatter();
     MemoryStream memstrm = new MemoryStream();
     byte[] Key = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16};
     byte[] IV = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16};
     TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
     CryptoStream csw = new CryptoStream(memstrm, tdes.CreateEncryptor(Key, IV), CryptoStreamMode.Write);
     formatter.Serialize(csw, emp);
     csw.FlushFinalBlock();
     byte[] data = memstrm.GetBuffer();
     int memsize = (int)memstrm.Length;
     byte[] size = BitConverter.GetBytes(memsize);
     strm.Write(size, 0, 4);
     strm.Write(data, 0, (int)memsize);
     strm.Flush();
     csw.Close();
     memstrm.Close();
  }
  public CryptoDataSender()
  {
     SerialEmployee emp1 = new SerialEmployee();
     SerialEmployee emp2 = new SerialEmployee();
     emp1.EmployeeID = 1;
     emp1.LastName = "Blum";
     emp1.FirstName = "Katie Jane";
     emp1.YearsService = 12;
     emp1.Salary = 35000.50;
     emp2.EmployeeID = 2;
     emp2.LastName = "Blum";
     emp2.FirstName = "Jessica";
     emp2.YearsService = 9;
     emp2.Salary = 23700.30;
     TcpClient client = new TcpClient("127.0.0.1", 9050);
     NetworkStream strm = client.GetStream();
     SendData(strm, emp1);
     SendData(strm, emp2);
     strm.Close();
     client.Close();
  }
  public static void Main()
  {
     CryptoDataSender cds = new CryptoDataSender();
  }

}

[Serializable] public class SerialEmployee {

  public int EmployeeID;
  public string LastName;
  public string FirstName;
  public int YearsService;
  public double Salary;
  public SerialEmployee()
  {
     EmployeeID = 0;
     LastName = null;
     FirstName = null;
     YearsService = 0;
     Salary = 0.0;
  }

}


 </source>