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.");
                }
            }
        }
示例#2
0
        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);
        }