Ejemplo n.º 1
0
        //Şifrele butonu
        private void Sifrele_Click(object sender, EventArgs e)
        {
            Bitmap sifreliResim = new Bitmap(TasiyiciResim.Image.Width, TasiyiciResim.Image.Height);
            Bitmap bitmap1      = new Bitmap(SifrelenecekResim.Image);

            SifrelenecekResim.Image = bitmap1;
            Bitmap bitmap2 = new Bitmap(TasiyiciResim.Image);

            if (SifrelenecekResim.Image != null && TasiyiciResim.Image != null)
            {
                if (bitmap1.Height * bitmap1.Width * 9 < bitmap2.Width * bitmap2.Height)
                {
                    if (SifrelenecekResim.Image != null && TasiyiciResim.Image != null)
                    {
                        SifreliResim.Show();
                        TasiyiciDizi            = new int[bitmap2.Height, bitmap2.Width * 3];
                        Tasiyici                = new int[bitmap2.Height, bitmap2.Width * 3];
                        SifreliDizi             = new int[bitmap2.Height, bitmap2.Width * 3];
                        int[,] SifrelenecekDizi = new int[bitmap1.Height, bitmap1.Width * 3];
                        int[,] sonuc            = new int[bitmap2.Height, bitmap2.Width * 3];
                        int   l = 0, z = 0;
                        int   bir, iki, uc, dort, bes;
                        int[] pikselDizisi = new int[4];
                        int[] boyutDizisi  = new int[5];
                        int   sonucMod     = 0;
                        desifreliSutun = sifreliResim.Width;
                        desifreliSatir = sifreliResim.Height;
                        sinir          = new int();
                        sinir          = bitmap2.Width * 3;
                        sutun          = bitmap1.Width;
                        satir          = bitmap1.Height;
                        string ids;
                        Color  renk;

                        //Taşıyıcı resmin R G B değerlerinin elde edilmesi.
                        for (int i = 0; i < bitmap2.Height; i++)
                        {
                            for (int j = 0; j < bitmap2.Width; j++)
                            {
                                renk = bitmap2.GetPixel(j, i);
                                TasiyiciDizi[i, z]     = renk.R;
                                TasiyiciDizi[i, z + 1] = renk.G;
                                TasiyiciDizi[i, z + 2] = renk.B;
                                Tasiyici[i, z]         = TasiyiciDizi[i, z];
                                Tasiyici[i, z + 1]     = TasiyiciDizi[i, z + 1];
                                Tasiyici[i, z + 2]     = TasiyiciDizi[i, z + 2];
                                z += 3;
                            }
                            z = 0;
                        }
                        //for (int v = 0; v < bitmap2.Height; v++)
                        //{
                        //    for (int j = 0; j < bitmap2.Width * 3; j++)
                        //    {

                        //        SW2.Write(Tasiyici[v, j] + " ");
                        //        if ((j + 1) % 3 == 0)
                        //        {
                        //            SW2.Write("\t");
                        //        }
                        //    }
                        //    SW2.WriteLine("\n");
                        //}

                        //SW2.Close();
                        //Şifrelenecek resmin R G B değerlerinin elde edilmesi.
                        for (int i = 0; i < bitmap1.Height; i++)
                        {
                            for (int j = 0; j < bitmap1.Width; j++)
                            {
                                SifrelenecekDizi[i, l]     = bitmap1.GetPixel(j, i).R;
                                SifrelenecekDizi[i, l + 1] = bitmap1.GetPixel(j, i).G;
                                SifrelenecekDizi[i, l + 2] = bitmap1.GetPixel(j, i).B;
                                l += 3;
                            }
                            l = 0;
                        }

                        //boyut şifreleme
                        for (int i = 0; i < 1; i++)
                        {
                            for (int j = 0; j < 2; j++)
                            {
                                if (k < 15)
                                {
                                    ids            = tabanCevirBoyut(bitmap1.Height);
                                    bir            = Int32.Parse(ids.Substring(0, 1));
                                    iki            = Int32.Parse(ids.Substring(1, 1));
                                    uc             = Int32.Parse(ids.Substring(2, 1));
                                    dort           = Int32.Parse(ids.Substring(3, 1));
                                    bes            = Int32.Parse(ids.Substring(4, 1));
                                    boyutDizisi[0] = bir;
                                    boyutDizisi[1] = iki;
                                    boyutDizisi[2] = uc;
                                    boyutDizisi[3] = dort;
                                    boyutDizisi[4] = bes;
                                }
                                else if (k < 30)
                                {
                                    ids            = tabanCevirBoyut(bitmap1.Width);
                                    bir            = Int32.Parse(ids.Substring(0, 1));
                                    iki            = Int32.Parse(ids.Substring(1, 1));
                                    uc             = Int32.Parse(ids.Substring(2, 1));
                                    dort           = Int32.Parse(ids.Substring(3, 1));
                                    bes            = Int32.Parse(ids.Substring(4, 1));
                                    boyutDizisi[0] = bir;
                                    boyutDizisi[1] = iki;
                                    boyutDizisi[2] = uc;
                                    boyutDizisi[3] = dort;
                                    boyutDizisi[4] = bes;
                                }
                                else
                                {
                                    MessageBox.Show("Şifrelenecek Resim Taşıyıcı Resme Sığmadı. Daha Büyük Bir Taşıyıcı Seçmelisiniz.");
                                }
                                for (int t = 0; t < 5; t++)
                                {
                                    sifreleMod7(sonucMod, boyutDizisi[t]);
                                }
                            }
                        }

                        //Piksel şifreleme
                        for (int i = 0; i < bitmap1.Height; i++)
                        {
                            for (int j = 0; j < bitmap1.Width * 3; j++)
                            {
                                bir             = Int32.Parse(tabanCevirPiksel(SifrelenecekDizi[i, j]).Substring(0, 1));
                                iki             = Int32.Parse(tabanCevirPiksel(SifrelenecekDizi[i, j]).Substring(1, 1));
                                uc              = Int32.Parse(tabanCevirPiksel(SifrelenecekDizi[i, j]).Substring(2, 1));
                                dort            = Int32.Parse(tabanCevirPiksel(SifrelenecekDizi[i, j]).Substring(3, 1));
                                pikselDizisi[0] = bir;
                                pikselDizisi[1] = iki;
                                pikselDizisi[2] = uc;
                                pikselDizisi[3] = dort;

                                for (int t = 0; t < 4; t++)
                                {
                                    sifreleMod7(sonucMod, pikselDizisi[t]);
                                }
                            }
                        }

                        //Güncellediğimiz taşıyıcı resmin piksellerini yeni bir diziye aktardık.
                        for (int t = 0; t < bitmap2.Height; t++)
                        {
                            for (int b = 0; b < bitmap2.Width * 3; b++)
                            {
                                SifreliDizi[t, b] = TasiyiciDizi[t, b];
                            }
                        }
                    }

                    //Şifrelenen Resmi ekrana bastırdık.
                    int o = 0, u = 0;
                    for (int i = 0; i < TasiyiciResim.Image.Height; i++)
                    {
                        for (int j = 0; j < TasiyiciResim.Image.Width; j++)
                        {
                            Convert.ToByte(SifreliDizi[i, j]);
                            byte r = Convert.ToByte(SifreliDizi[u, o]);
                            byte g = Convert.ToByte(SifreliDizi[u, o + 1]);
                            byte b = Convert.ToByte(SifreliDizi[u, o + 2]);
                            o += 3;
                            Color myNewColor = Color.FromArgb(r, g, b);
                            sifreliResim.SetPixel(j, i, myNewColor);
                        }
                        o = 0;
                        u++;
                    }
                    SifreliResim.Image = sifreliResim;

                    //PSNR DEĞERİ HESAPLAMA
                    double mse = 0, temp = 0, psnr = 0;
                    int    m = SifreliResim.Image.Height;
                    int    p = SifreliResim.Image.Width * 3;
                    for (int i = 0; i < m - 1; i++)
                    {
                        for (int j = 0; j < p - 1; j++)
                        {
                            temp = SifreliDizi[i, j] - Tasiyici[i, j];
                            mse += temp * temp;
                        }
                    }
                    mse         = mse / (m * p * 3);
                    psnr        = (20 * Math.Log10(255)) - (10 * Math.Log10(mse));
                    psnr        = Math.Round(psnr, 0);
                    label5.Text = psnr.ToString();
                }
                else
                {
                    MessageBox.Show("sığmadı");
                }
            }
            else
            {
                MessageBox.Show("resim seç");
            }
            k = 0;
            y = 0;
        }
Ejemplo n.º 2
0
        private void Sifrele_Click(object sender, EventArgs e)
        {
            if (SifrelenecekResim.Image != null && TasiyiciResim.Image != null)
            {
                Bitmap desifreliResim = new Bitmap(TasiyiciResim.Image.Width, TasiyiciResim.Image.Height);
                Bitmap bitmap1        = new Bitmap(SifrelenecekResim.Image);
                SifrelenecekResim.Image = bitmap1;
                Bitmap bitmap2 = new Bitmap(TasiyiciResim.Image);
                if (bitmap1.Height * bitmap1.Width * 8 < bitmap2.Width * bitmap2.Height)
                {
                    if (SifrelenecekResim.Image != null && TasiyiciResim.Image != null)
                    {
                        SifreliResim.Show();
                        TasiyiciDizi            = new int[bitmap2.Height, bitmap2.Width * 3];
                        Tasiyici                = new int[bitmap2.Height, bitmap2.Width * 3];
                        SifreliDizi             = new int[bitmap2.Height, bitmap2.Width * 3];
                        int[,] SifrelenecekDizi = new int[bitmap1.Height, bitmap1.Width * 3];
                        int l = 0;
                        int z = 0;
                        int[,] sonuc = new int[bitmap2.Height, bitmap2.Width * 3];
                        int   sonucMod = 0;
                        int   bir, iki, uc, dort, bes;
                        int[] pikselDizisi = new int[4];
                        int[] boyutDizisi  = new int[5];
                        sinir          = new int();
                        sinir          = bitmap2.Width * 3;
                        desifreliSutun = desifreliResim.Width;
                        desifreliSatir = desifreliResim.Height;
                        string ids;
                        Color  renk;
                        for (int i = 0; i < bitmap2.Height; i++)
                        {
                            for (int j = 0; j < bitmap2.Width; j++)
                            {
                                renk = bitmap2.GetPixel(j, i);
                                TasiyiciDizi[i, z]     = renk.R;
                                TasiyiciDizi[i, z + 1] = renk.G;
                                TasiyiciDizi[i, z + 2] = renk.B;
                                Tasiyici[i, z]         = TasiyiciDizi[i, z];
                                Tasiyici[i, z + 1]     = TasiyiciDizi[i, z + 1];
                                Tasiyici[i, z + 2]     = TasiyiciDizi[i, z + 2];
                                z += 3;
                            }
                            z = 0;
                        }
                        for (int i = 0; i < bitmap1.Height; i++)
                        {
                            for (int j = 0; j < bitmap1.Width; j++)
                            {
                                SifrelenecekDizi[i, l]     = bitmap1.GetPixel(j, i).R;
                                SifrelenecekDizi[i, l + 1] = bitmap1.GetPixel(j, i).G;
                                SifrelenecekDizi[i, l + 2] = bitmap1.GetPixel(j, i).B;
                                l += 3;
                            }
                            l = 0;
                        }

                        //boyut şifreleme
                        for (int i = 0; i < 1; i++)
                        {
                            for (int j = 0; j < 2; j++)
                            {
                                //if (y == 0 && k < 17)
                                //    j = 0;
                                if (k < 10)
                                {
                                    ids = tabanCevirBoyut(bitmap1.Height);

                                    bir            = Int32.Parse(ids.Substring(0, 1));
                                    iki            = Int32.Parse(ids.Substring(1, 1));
                                    uc             = Int32.Parse(ids.Substring(2, 1));
                                    dort           = Int32.Parse(ids.Substring(3, 1));
                                    bes            = Int32.Parse(ids.Substring(4, 1));
                                    boyutDizisi[0] = bir;
                                    boyutDizisi[1] = iki;
                                    boyutDizisi[2] = uc;
                                    boyutDizisi[3] = dort;
                                    boyutDizisi[4] = bes;
                                }
                                else if (k < 20)
                                {
                                    ids = tabanCevirBoyut(bitmap1.Width);

                                    bir            = Int32.Parse(ids.Substring(0, 1));
                                    iki            = Int32.Parse(ids.Substring(1, 1));
                                    uc             = Int32.Parse(ids.Substring(2, 1));
                                    dort           = Int32.Parse(ids.Substring(3, 1));
                                    bes            = Int32.Parse(ids.Substring(4, 1));
                                    boyutDizisi[0] = bir;
                                    boyutDizisi[1] = iki;
                                    boyutDizisi[2] = uc;
                                    boyutDizisi[3] = dort;
                                    boyutDizisi[4] = bes;
                                }

                                for (int t = 0; t < 5; t++)
                                {
                                    sifreleMod5(sonucMod, boyutDizisi[t]);
                                }
                            }
                        }
                        //Piksel şifreleme
                        for (int i = 0; i < bitmap1.Height; i++)
                        {
                            for (int j = 0; j < bitmap1.Width * 3; j++)
                            {
                                bir             = Int32.Parse(tabanCevirPiksel(SifrelenecekDizi[i, j]).Substring(0, 1));
                                iki             = Int32.Parse(tabanCevirPiksel(SifrelenecekDizi[i, j]).Substring(1, 1));
                                uc              = Int32.Parse(tabanCevirPiksel(SifrelenecekDizi[i, j]).Substring(2, 1));
                                dort            = Int32.Parse(tabanCevirPiksel(SifrelenecekDizi[i, j]).Substring(3, 1));
                                pikselDizisi[0] = bir;
                                pikselDizisi[1] = iki;
                                pikselDizisi[2] = uc;
                                pikselDizisi[3] = dort;

                                for (int t = 0; t < 4; t++)
                                {
                                    sifreleMod5(sonucMod, pikselDizisi[t]);
                                }
                            }
                        }
                        //şifreli resim pikselleri
                        for (int t = 0; t < bitmap2.Height; t++)
                        {
                            for (int b = 0; b < bitmap2.Width * 3; b++)
                            {
                                SifreliDizi[t, b] = TasiyiciDizi[t, b];
                            }
                        }

                        int o = 0, u = 0;
                        for (int i = 0; i < TasiyiciResim.Image.Height; i++)
                        {
                            for (int j = 0; j < TasiyiciResim.Image.Width; j++)
                            {
                                Convert.ToByte(SifreliDizi[i, j]);
                                byte r = Convert.ToByte(SifreliDizi[u, o]);
                                byte g = Convert.ToByte(SifreliDizi[u, o + 1]);
                                byte b = Convert.ToByte(SifreliDizi[u, o + 2]);
                                o += 3;
                                Color myNewColor = Color.FromArgb(r, g, b);
                                desifreliResim.SetPixel(j, i, myNewColor);
                            }
                            o = 0;
                            u++;
                        }
                        SifreliResim.Image = desifreliResim;

                        //PSNR DEĞERİ HESAPLAMA
                        double mse = 0, temp = 0, psnr = 0;
                        int    m = SifreliResim.Image.Height;
                        int    p = SifreliResim.Image.Width * 3;
                        for (int i = 0; i < m - 1; i++)
                        {
                            for (int j = 0; j < p - 1; j++)
                            {
                                temp = SifreliDizi[i, j] - Tasiyici[i, j];
                                mse += temp * temp;
                            }
                        }
                        mse         = mse / (m * p * 3); // Because of RGB
                        psnr        = (20 * Math.Log10(255)) - (10 * Math.Log10(mse));
                        psnr        = Math.Round(psnr, 0);
                        label5.Text = psnr.ToString();
                    }
                }
                else
                {
                    MessageBox.Show("sığdıramadım");
                }
            }
            else
            {
                MessageBox.Show("lütfen resim seçiniz.");
            }
            k = 0;
            y = 0;
        }