private void Main_Load(object sender, EventArgs e)// A ve B kişileri için klasor oluşturma ve public private anahtarlarını yaratma { Directory.CreateDirectory(aPath); Directory.CreateDirectory(bPath); Asymmetric_Crypto.generateKeys(aPath + "\\pub.cert", aPath + "\\priv.cert"); Asymmetric_Crypto.generateKeys(bPath + "\\pub.cert", bPath + "\\priv.cert"); }
private void make_Click(object sender, EventArgs e) { string path = ""; //dosya yolu byte[] signedData; // alınan dosyanın imzalı hali byte[] key; // şifrelemek için oluşturlan anahtar byte[] encrypted; //şifreli metin byte[] hash; // Giden hash byte[] signedHash; // Giden imzalı hash byte[] encryptedSignedHash; // Giden şifreli imzalı hash byte[] decryptedSignedHash; //Çözülmüş imzalı hash byte[] encryptedKey; //Giden şifreli anahtar byte[] decryptedKey; //Çözülmüş anahtar if (dosyaIslem.Text == "Dosya Gönder") { if (signature.Checked == false && crypto.Checked == false) { MessageBox.Show("Lütfen işlem seçiniz"); } else { hash = Hashing.getSha512Hash(file); //gönderilecek dosyanın hası alınıyor if (signature.Checked && crypto.Checked == false) //Dosya imzalama { try { path = receiver + "\\" + userr + " Gelen Imzali"; Directory.CreateDirectory(path); signedData = Asymmetric_Crypto.signData(file, senderPriv);//Asimetrik kripto sınıfından File.WriteAllBytes(path + "\\Signed.s", signedData); File.WriteAllBytes(path + "\\" + fName, file); MessageBox.Show("Dosya imzalanıp gönderildi"); } catch (Exception ex) { MessageBox.Show("Dosya İmzalamada HATA:", ex.Message); } } else if (signature.Checked == false && crypto.Checked)//Dosya şifreleme { try { path = receiver + "\\" + userr + " Gelen Sifreli"; Directory.CreateDirectory(path); signedHash = Asymmetric_Crypto.signData(hash, senderPriv); //imzalı hash key = Symmetric_Crypto.generateKey(); //key encryptedSignedHash = Symmetric_Crypto.encrypt(signedHash, key); //şifreli imzalı hash encryptedKey = Asymmetric_Crypto.encrypt(key, receiverPub); // Sadece alıcının okuyabilecegi key encrypted = Symmetric_Crypto.encrypt(file, key); //Simetrik sınıfından File.WriteAllBytes(path + "\\Key.key", encryptedKey); File.WriteAllBytes(path + "\\" + fName.Split('.')[0] + ".cr", encrypted); File.WriteAllBytes(path + "\\" + fName.Split('.')[0] + ".esHash", encryptedSignedHash); File.WriteAllBytes(path + "\\" + fName.Split('.')[0] + ".hash", hash); MessageBox.Show("Dosya şifrelenip gönderildi."); } catch (Exception ex) { MessageBox.Show("Dosya şifrelemede HATA:", ex.Message); } } else if (signature.Checked && crypto.Checked)//Dosyayı hem imzalama hem şifreleme { try { path = receiver + "\\" + userr + " Gelen Imzali Sifreli"; Directory.CreateDirectory(path); signedData = Asymmetric_Crypto.signData(file, senderPriv); //imzalı dosya signedHash = Asymmetric_Crypto.signData(hash, senderPriv); //imzalı hash key = Symmetric_Crypto.generateKey(); //key encryptedSignedHash = Symmetric_Crypto.encrypt(signedHash, key); //şifreli imzalı hash encryptedKey = Asymmetric_Crypto.encrypt(key, receiverPub); // Sadece alıcının okuyabilecegi key encrypted = Symmetric_Crypto.encrypt(file, key); //Simetrik sınıfından File.WriteAllBytes(path + "\\Key.key", encryptedKey); File.WriteAllBytes(path + "\\" + fName.Split('.')[0] + ".sc", encrypted); File.WriteAllBytes(path + "\\Signed.s", signedData); File.WriteAllBytes(path + "\\" + fName.Split('.')[0] + ".esHash", encryptedSignedHash); File.WriteAllBytes(path + "\\" + fName.Split('.')[0] + ".hash", hash); MessageBox.Show("Dosya şifrelenip imzalanıp gönderildi."); } catch (Exception ex) { MessageBox.Show("Dosya imzalama ve şifrelemede HATA:", ex.Message); } } } } else if (dosyaIslem.Text == "Dosya Al") { path = receiver + "\\ Gelen Dosya"; if (signature.Checked && crypto.Checked == false)//Dosya İmza doğrulama { try { if (Asymmetric_Crypto.verifyData(file, signedFile, senderPub)) { MessageBox.Show("İmza doğrulandı"); } else { MessageBox.Show("İmza doğrulanamadı. Gelen klasor siliniyor."); Directory.Delete(receiver + "\\" + userr + " Gelen Imzali", true); } } catch (Exception ex) { MessageBox.Show("Dosya imza doğrulamada HATA:", ex.Message); } } else if (signature.Checked == false && crypto.Checked)//Dosya şifre çözme { try { Directory.CreateDirectory(path); decryptedKey = Asymmetric_Crypto.decrypt(outKey, receiverPriv); //dosya şifreleme anahtarını sadece alıcı açabilir. decryptedSignedHash = Symmetric_Crypto.decrypt(encryptedSignedHashF, decryptedKey); if (Asymmetric_Crypto.verifyData(hashF, decryptedSignedHash, senderPub)) //göndericinin public anahtarı ile hashin değişmediği dogrulanıyor { byte[] plainText = Symmetric_Crypto.decrypt(encryptedFile, decryptedKey); File.WriteAllBytes(path + "\\" + fName, plainText); } else { MessageBox.Show("Dosyanın hashi doğrulanamadı. Klasor siliniyor."); Directory.Delete(path, true); Directory.Delete(receiver + "\\" + userr + " Gelen Sifreli", true); } } catch (Exception ex) { MessageBox.Show("Dosya deşifrelemede HATA:", ex.Message); } } else if (signature.Checked && crypto.Checked)//Dosya şifre çözme ve imza onaylama { try { Directory.CreateDirectory(path); decryptedKey = Asymmetric_Crypto.decrypt(outKey, receiverPriv); //dosya şifreleme anahtarını sadece alıcı açabilir. decryptedSignedHash = Symmetric_Crypto.decrypt(encryptedSignedHashF, decryptedKey); if (Asymmetric_Crypto.verifyData(hashF, decryptedSignedHash, senderPub)) //göndericinin public anahtarı ile hashin değişmediği dogrulanıyor { byte[] plainText = Symmetric_Crypto.decrypt(encryptedFile, decryptedKey); if (Asymmetric_Crypto.verifyData(plainText, signedFile, senderPub)) { MessageBox.Show("Dosya deşifrelenip İmza doğrulandı"); File.WriteAllBytes(path + "\\" + fName, plainText); } else { MessageBox.Show("Dosya deşifrelendi fakat imza doğrulanamadı. Gelen klasor siliniyor."); Directory.Delete(path, true); Directory.Delete(receiver + "\\" + userr + " Gelen Imzali Sifreli", true); } } else { MessageBox.Show("Dosyanın hashi doğrulanamadı. Klasor siliniyor."); Directory.Delete(path, true); Directory.Delete(receiver + "\\" + userr + " Gelen Imzali Sifreli", true); } } catch (Exception ex) { MessageBox.Show("Dosya deşifreleme ve imza doğrulamada HATA:", ex.Message); } } } }