サーバーからクライアントに画像を送信したいので、次のことを行いました。
*サーバー側:
イメージをバイト配列に変換し、配列を 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);
助けてください