private void dekoder_Click(object sender, EventArgs e) { try { extractedText = ""; notesLabel3.Text = "Proszę czekać..."; notesLabel3.ForeColor = Color.Black; błąd = 0; progressBar1.Value = 0; if (radio_xor.Checked) { xor = 1; xor_aktywacja = true; } else { xor = 0; xor_aktywacja = false; } // kodowanie znaków if (radioASCII.Checked) { kodowanie = "ASCII"; } else if (radioUTF32.Checked) { kodowanie = "UTF32"; } else if (radioUTF16.Checked) { kodowanie = "UTF16"; } else if (radioUTF8.Checked) { kodowanie = "UTF8"; } // zapis znaków if (radio8bit.Checked) { zapis = 8; } if (radio9bit.Checked) { zapis = 10; } if (radio16bit.Checked) { zapis = 16; } if (radio32bit.Checked) { zapis = 32; } // wybór kanału if (red.Checked) { indeks = "R"; } if (green.Checked) { indeks = "G"; } if (blue.Checked) { indeks = "B"; } if (alfa.Checked) { indeks = "A"; } if (multi.Checked) { indeks = "Multi"; } this.timer1.Start(); // start timera if (element == 0) // Wariant z pliku - dekoder ////////////////////////////////////////////////////////////// { bmp = new Bitmap(obraz_dekodowany.Image); extractedText = Steganografia.dekodowanie(bmp, indeks, kodowanie, zapis, xor, xor_aktywacja); if (checkDekodowanie.Checked) { try { extractedText = AES.Deszyfrowanie(extractedText, haslo2.Text); } catch { błąd = 1; MessageBox.Show("Nieprawidłowe hasło spróbuj ponownie.", "Błąd !"); notesLabel3.ForeColor = Color.OrangeRed; notesLabel3.Text = "Błąd ! Proszę spróbować ponownie."; return; } } } if (element == 1) // Wariant z folderu - dekoder //////////////////////////////////////////////////////////////////////// { folder_bmp = new Bitmap[path.Count]; int licznik = 0; string extractedText_folder = ""; foreach (var p in path) { folder_bmp[licznik] = new Bitmap(Image.FromFile(p.ToString())); extractedText += "---- " + Path.GetFileName(p.ToString()) + " ---" + Environment.NewLine + "Treść znaku :" + Environment.NewLine; extractedText_folder = Steganografia.dekodowanie(folder_bmp[licznik], indeks, kodowanie, zapis, xor, xor_aktywacja); if (checkDekodowanie.Checked) { try { extractedText_folder = AES.Deszyfrowanie(extractedText_folder, haslo2.Text); extractedText += extractedText_folder + Environment.NewLine + Environment.NewLine + "-------------------------------------------------------" + Environment.NewLine + Environment.NewLine; } catch { błąd = 1; MessageBox.Show("Nieprawidłowe hasło spróbuj ponownie.", "Błąd !"); notesLabel3.ForeColor = Color.OrangeRed; notesLabel3.Text = "Błąd ! Proszę spróbować ponownie."; return; } } else { extractedText += extractedText_folder + Environment.NewLine + Environment.NewLine + "-------------------------------------------------------" + Environment.NewLine + Environment.NewLine; } licznik++; } } } catch (Exception ex2) { błąd = 1; MessageBox.Show(ex2.Message, "Błąd !"); notesLabel3.ForeColor = Color.OrangeRed; notesLabel3.Text = "Błąd ! Proszę spróbować ponownie."; dekoder.Enabled = true; } }
private void koder_Click(object sender, EventArgs e) { try { komunikat2.Text = "Proszę czekać..."; komunikat2.ForeColor = Color.Black; błąd = 0; komunikat.Text = "Komunikat :"; komunikat.ForeColor = Color.Black; int count = 0; progressBar2.Value = 0; text = dataTextBox.Text; koder.Enabled = false; if (text.Equals("") == false) { this.timer2.Start(); } if (radio_xor.Checked) { xor = 1; xor_aktywacja = true; } else { xor = 0; xor_aktywacja = false; } // zapis znaków if (radio8bit.Checked) { zapis = 8; } if (radio9bit.Checked) { zapis = 10; } else if (radio16bit.Checked) { zapis = 16; } else if (radio32bit.Checked) { zapis = 32; } // bmp = new Bitmap(imagePictureBox.Image); if (red.Checked) { indeks = "R"; } if (green.Checked) { indeks = "G"; } if (blue.Checked) { indeks = "B"; } if (alfa.Checked) { indeks = "A"; } if (multi.Checked) { indeks = "Multi"; } if (text.Equals("")) { błąd = 1; MessageBox.Show("Tekst znaku wodnego nie może być pusty !", "Błąd !"); koder.Enabled = true; komunikat2.Text = "Błąd ! Proszę spróbować ponownie."; komunikat2.ForeColor = Color.OrangeRed; return; } if (encryptCheckBox.Checked) { if (haslo.Text.Length < 5) { błąd = 1; MessageBox.Show("Hasło musi się składać z minimum 5 znaków", "Błąd !"); koder.Enabled = true; komunikat2.Text = "Błąd ! Proszę spróbować ponownie."; komunikat2.ForeColor = Color.OrangeRed; return; } else { text = AES.Syfrowanie(text, haslo.Text); if (text.Length > poj_znakow) { błąd = 1; MessageBox.Show("Syfr AES : " + text.Length + " znaków przekracza pojemność nosnika. Proszę zmniejszyć ilość znaków", "Błąd !"); koder.Enabled = true; komunikat2.Text = "Błąd ! Proszę spróbować ponownie."; komunikat2.ForeColor = Color.OrangeRed; } } } savetool.Enabled = true; if (element == 0) /////////// WARIANT 1 "z pliku" { // konwersja do streamu i odczyt if (radioorg.Checked) { bmp = new Bitmap(Image.FromFile(dialog.FileName)); } if (radiojpg.Checked) { long c = Convert.ToInt32(comboKompresja.Text); var jpg = new Bitmap(dialog.FileName); var stream = new System.IO.MemoryStream(); EncoderParameters encoder = new EncoderParameters(1); encoder.Param[0] = new EncoderParameter( System.Drawing.Imaging.Encoder.Quality, c); ImageCodecInfo image_codec_info = GetEncoderInfo("image/jpeg"); jpg.Save(stream, image_codec_info, encoder); bmp = new Bitmap(Image.FromStream(stream)); } if (radiopng.Checked) { var png = new Bitmap(dialog.FileName); var stream = new System.IO.MemoryStream(); png.Save(stream, ImageFormat.Png); bmp = new Bitmap(Image.FromStream(stream)); } if (radiogif.Checked) { var gif = new Bitmap(dialog.FileName); var stream = new System.IO.MemoryStream(); gif.Save(stream, ImageFormat.Gif); bmp = new Bitmap(Image.FromStream(stream)); } if (radiobmp.Checked) { var bmp_ = new Bitmap(dialog.FileName); var stream = new System.IO.MemoryStream(); bmp_.Save(stream, ImageFormat.Bmp); bmp = new Bitmap(Image.FromStream(stream)); } if (radiojpeg.Checked) { var jpeg = new Bitmap(dialog.FileName); var stream = new System.IO.MemoryStream(); jpeg.Save(stream, ImageFormat.Jpeg); bmp = new Bitmap(Image.FromStream(stream)); } memoryStream = new MemoryStream(); bmp_temp = Steganografia.kodowanie(text, bmp, indeks, zapis, xor, xor_aktywacja); bmp_temp.Save(memoryStream, ImageFormat.Bmp); } if (element == 1) ///// WARIANT 2 z folderu { folder_bmp = new Bitmap[path.Count]; foreach (var p in path) { if (radioorg.Checked) { bmp = new Bitmap(Image.FromFile(p.ToString())); } if (radiojpg.Checked) // dla jpg { long c = Convert.ToInt32(comboKompresja.Text); var jpg = new Bitmap(Image.FromFile(p.ToString())); var stream = new System.IO.MemoryStream(); EncoderParameters encoder = new EncoderParameters(1); encoder.Param[0] = new EncoderParameter( System.Drawing.Imaging.Encoder.Quality, c); ImageCodecInfo image_codec_info = GetEncoderInfo("image/jpeg"); jpg.Save(stream, image_codec_info, encoder); bmp = new Bitmap(Image.FromStream(stream)); } if (radiopng.Checked) { var png = new Bitmap(Image.FromFile(p.ToString())); var stream = new System.IO.MemoryStream(); png.Save(stream, ImageFormat.Png); bmp = new Bitmap(Image.FromStream(stream)); } if (radiogif.Checked) { var gif = new Bitmap(Image.FromFile(p.ToString())); var stream = new System.IO.MemoryStream(); gif.Save(stream, ImageFormat.Gif); bmp = new Bitmap(Image.FromStream(stream)); } if (radiobmp.Checked) { var bmp_ = new Bitmap(Image.FromFile(p.ToString())); var stream = new System.IO.MemoryStream(); bmp_.Save(stream, ImageFormat.Bmp); bmp = new Bitmap(Image.FromStream(stream)); } if (radiojpeg.Checked) { var jpeg = new Bitmap(Image.FromFile(p.ToString())); var stream = new System.IO.MemoryStream(); jpeg.Save(stream, ImageFormat.Jpeg); bmp = new Bitmap(Image.FromStream(stream)); } folder_bmp[count] = Steganografia.kodowanie(text, bmp, indeks, zapis, xor, xor_aktywacja); count++; } } } catch (Exception ex) { błąd = 1; MessageBox.Show(ex.Message, "Błąd !"); koder.Enabled = true; savetool.Enabled = false; if (element == 1) { komunikat2.ForeColor = Color.OrangeRed; komunikat2.Text = "Błąd ! Proszę się upewnić ze w folderze są tylko" + Environment.NewLine + "pliki zdjęciowe."; } else { komunikat2.ForeColor = Color.OrangeRed; komunikat2.Text = "Błąd ! Proszę spróbować ponownie."; } } }