private void SzyfrujButton_Click(object sender, RoutedEventArgs e) { var sizeoftext = (Changery.StringToBitArray(DoZaszyfrowaniaText.Text).Length); if (sizeoftext > pojemnoscszyfrowania) { MessageBox.Show("Niestety, tekst jest zbyt długi dla wczytanego obrazu. Wczytaj większy obraz lub skróć tekst tekst."); } else { if (CheckBox.IsChecked == false) { Obraz = Szyfry.Szyfruj(Obraz, DoZaszyfrowaniaText.Text); ImageSource imgSource = new BitmapImage(new Uri(path)); image2.Source = imgSource; //DeszyfrujButton.IsEnabled = true; MessageBox.Show("Pomyślnie zaszyfrowano."); } else { Obraz = Szyfry.Ukryj2(Obraz, DoZaszyfrowaniaText.Text); ImageSource imgSource = new BitmapImage(new Uri(path)); image2.Source = imgSource; //DeszyfrujButton.IsEnabled = true; MessageBox.Show("Pomyślnie zaszyfrowano."); } } }
public static Bitmap Szyfruj(Bitmap Obraz, string tekst) { //Zmiany bitów "Niezauważalne" //1 bit w kolorze zielonym //2 bity w czerwonym //5 bitów w niebieskiem //Szyfruję w kolejności R G B //Kodowanie zielone - parzyste->0 nieparzyste->1 //Kodowanie czerwone %4 0->00 1->01 2->10 3->11 //Kodowanie niebieskie %32 0->0 0000 .... 31-> 1 1111 BitArray TekstBitowy = Changery.StringToBitArray(tekst); int PozycjaWbitach = 0; int Height = Obraz.Height; int Width = Obraz.Width; Color kolor; int R, G, B; R = G = B = 0; for (int i = 0; i < Height; i++) { for (int j = 0; j < Width; j++) { kolor = Obraz.GetPixel(j, i); R = kolor.R; B = kolor.B; G = kolor.G; var Zakoduj = 0; //Kodowanie czerwonego //1 bit if (PozycjaWbitach < TekstBitowy.Length) { if (TekstBitowy[PozycjaWbitach]) { Zakoduj++; } } PozycjaWbitach++; //2bit if (PozycjaWbitach < TekstBitowy.Length) { if (TekstBitowy[PozycjaWbitach]) { Zakoduj += 2; } } PozycjaWbitach++; R = R - R % 4 + Zakoduj; //Kodowanie zielonego 1 bitowe Zakoduj = 0; if (PozycjaWbitach < TekstBitowy.Length) { if (TekstBitowy[PozycjaWbitach]) { Zakoduj = 1; } } PozycjaWbitach++; G = G - G % 2 + Zakoduj; //Kodowanie niebieskiego 5 bitowe Zakoduj = 0; //1 bit if (PozycjaWbitach < TekstBitowy.Length) { if (TekstBitowy[PozycjaWbitach]) { Zakoduj = 1; } } PozycjaWbitach++; //2 bit if (PozycjaWbitach < TekstBitowy.Length) { if (TekstBitowy[PozycjaWbitach]) { Zakoduj += 2; } } PozycjaWbitach++; //3 bit if (PozycjaWbitach < TekstBitowy.Length) { if (TekstBitowy[PozycjaWbitach]) { Zakoduj += 4; } } PozycjaWbitach++; //4 bit if (PozycjaWbitach < TekstBitowy.Length) { if (TekstBitowy[PozycjaWbitach]) { Zakoduj += 8; } } PozycjaWbitach++; //5 bit if (PozycjaWbitach < TekstBitowy.Length) { if (TekstBitowy[PozycjaWbitach]) { Zakoduj += 16; } } PozycjaWbitach++; B = B - B % 32 + Zakoduj; Obraz.SetPixel(j, i, Color.FromArgb(R, G, B)); //if (PozycjaWbitach == TekstBitowy.Length) // break; } } return(Obraz); }