//Ş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; }
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; }