видає помилку (CryptMode == true)//якщо метод горизонтальний, то перераховує підсумкове поле для запису в зображенні
{= sverhu; MaxShift1=vysota - snizu;//=Sleva; MaxShift2=shirina - sprava;//
}//якщо метод вертикальний, то перераховує підсумкове поле для запису в зображенні
{= sleva; MaxShift1=shirina - sprava;//=Sverhu; MaxShift1=vysota - snizu;//
}. Text= raquo ;;// обнуляем поле текста.Resize (ref InputBytes, 1000);// збільшуємо розмір масиву=0;// обнуляем індекс масиву повідомлення
SendingBit=0;// обнуляем лічильник переданого біта
image=DecryptImage;// показує зашифроване ізображеніеstop=true;// прапор зупинки= raquo ;;// для читання
for (int y=MinShift1; y lt; MaxShift1 amp; amp; stop; y +=interval)//цикл записи по вертикалі (int x=MinShift2; x lt; MaxShift2 amp; amp; stop; x +=interval)//цикл записи по горизонталі
{(CryptMode == true) ColorVAR=DecryptImage.GetPixel (x, y); else ColorVAR=DecryptImage.GetPixel (y, x);
RGB [0]=ColorVAR.R;// присвоєння червоного каналу [1]=ColorVAR.G;// присвоєння зеленого каналу [2]=ColorVAR.B;// присвоєння синього каналу
for (ColorPosition=0; ColorPosition lt; 3 amp; amp; stop; ColorPosition ++)
{// перебираємо колірні канали
if ((Colors [ColorPosition] amp; 1) == 1)
{// звіряємо канал з маскою квітів
for (BitPosition=7; BitPosition gt;=0; BitPosition -)
{// перебираємо розрядність (((Bits gt; gt; BitPosition) amp; 1) == 1)
{// звіряємо розряд з маскою бітів (((RGB [ColorPosition] gt; gt; BitPosition) amp; 1) == 1) InputByte ^=128;
InputBit ++;// якщо необхідно встановити одиницю, робимо XOR 128 (InputBit == 8)//вважали байт
{[Index]=InputByte;// записуємо отриманий байт (Index + 1 gt;=InputBytes.Length) Array.Resize (ref InputBytes, InputBytes.Length + 10000);// якщо вийшли за межі масиву - збільшуємо його ++;// збільшуємо індекс в масиві=0;// обнуляем лічильник бітів=0;// обнуляем лічильник байтів (InputBytes [Index - 1] == 0x21 amp; amp; InputBytes [Index - 2] == 0x21 amp; amp; InputBytes [Index - 3] == 0x21)//якщо отримали стопер
{. Resize (ref InputBytes, Index - 3);// видаляємо стопер з отриманого повідомлення=false;// встановлюємо прапор зупинки;// виходимо з циклу
} (WriteMode == false amp; amp; InputBytes [Index - 1] == 0x20 amp; amp; InputBytes [Index - 2] == 0x20 amp; amp; InputBytes [Index - 3] == 0x20 amp; amp; str == )//якщо отримали стопер імені файлу
{. Resize (ref InputBytes, Index - 3);// видаляємо стопер=Encoding.BigEndianUnicode.GetString (InputBytes);// витягаємо ім'я та розширення файлу (декодуємо його в unicode) .Clear (InputBytes, 0, InputBytes.Length);// очищаємо масив
Index=0;
}
} InputByte gt; gt;=1;// зміщуємо отриманий байт на один вправо
}
}
}
}
} (WriteMode == true)//якщо не отримали ім'я файлу, значить прийняте повідомлення - текст
{= Encoding.BigEndianUnicode.GetString (InputBytes);// декодує повідомлення в.Text=str;// unicode і вставляє в текст-бокс
}//отримали файл
{SafeFile=new SaveFileDialog ();// викликаємо діалог збереження файла.Filter= All Files (*. *) | *. * raquo ;;// встановлюємо фільтр діалогового окна.FileName=str;// передаємо ім'я і розширення файлу (SafeFile.ShowDialog () == DialogResult.OK)//якщо користувач натиснув ОК
{
{. IO.File.WriteAllBytes (SafeFile.FileName, InputBytes);// пробуємо записати файл на комп'ютер
} (Exception ex)
{. Show ( Не вдається зберегти файл: + ex.Message, Увага );// якщо не вийшло, виводимо помилку
}
}
}
}