1

サーバーからクライアントに画像を送信したいので、次のことを行いました。

*サーバー側:

イメージをバイト配列に変換し、配列を md5 で暗号化してクライアントに送信します

これはコードです:

  byte[] byte1;

  Bitmap mg = new Bitmap(@"D:\ffffffffff13.jpg");
  Image im = mg;
  MemoryStream ms = new MemoryStream();
  im.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
  byte[] bytes = ms.ToArray();
  MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
  TripleDESCryptoServiceProvider tDES = new
  TripleDESCryptoServiceProvider();
  tDES.Key = md5.ComputeHash(Encoding.ASCII.GetBytes("die"));
  tDES.Mode = CipherMode.ECB;
  tDES.Padding = PaddingMode.PKCS7;
  ICryptoTransform trans = tDES.CreateEncryptor();
  byte1 = trans.TransformFinalBlock(bytes, 0, bytes.Length);
  socket.BeginSend(byte1, 0, byte1.Length, SocketFlags.None, new
  AsyncCallback(SendCallback), socket);

*クライアント側:

サーバーから受信したバイト配列を復号化し、画像に変換します

これはコードです:

  byte[] receivedBuff = new byte[4000];
  int receiv = clientSocket.Receive(receivedBuff);
  byte[] data = new byte[receiv];
  Array.Copy(receivedBuff, data, receiv);

  MD5CryptoServiceProvider md51 = new MD5CryptoServiceProvider();
  TripleDESCryptoServiceProvider tDES1 = new TripleDESCryptoServiceProvider();
  tDES1.Key = md51.ComputeHash(Encoding.ASCII.GetBytes("die"));
  tDES1.Mode = CipherMode.ECB;
  tDES1.Padding = PaddingMode.PKCS7;
  ICryptoTransform trans1 = tDES1.CreateDecryptor();

  bytes2 = trans1.TransformFinalBlock(data, 0, data.Length);
  MemoryStream ms1 = new MemoryStream(bytes2);
  Image returnImage = Image.FromStream(ms1);
  pictureBox2.Image = returnImage;

しかし、クライアントがクライアントからバイト配列を受け取ると、このラインでエラーが発生し、Bad dataと表示されます

  bytes2 = trans1.TransformFinalBlock(data, 0, data.Length);

助けてください

4

0 に答える 0