private void uiActionKreirajKljuceve_Click(object sender, EventArgs e) { DigitalniPotpis dp = new DigitalniPotpis(); dp.KreiranjeKluceva(); }
private void uiActionProvjeraPoruke_Click(object sender, EventArgs e) { UpisIspisDatoteka uid = new UpisIspisDatoteka(); string kljuc = uid.Citanje("D:\\DS\\1. SEMESTAR\\SIS\\klijent2\\klijent2\\klijent2\\javniKljucServera.txt"); DigitalniPotpis dp = new DigitalniPotpis(); bool provjera = true; byte[] pomocnoPolje; int velicinaPaketa = 172; int brojPaketaZaDekriptiranje = Encoding.UTF8.GetBytes(kriptiraniHashPrimanje).Length / velicinaPaketa; byte[] porukaUBitovimaDekriptiranje = Encoding.UTF8.GetBytes(kriptiraniHashPrimanje); byte[] porukaUBitovima = Encoding.UTF8.GetBytes(primljenaPoruka); for (int i = 0; i < brojPaketaZaDekriptiranje; i++) { int pocetak = i * velicinaPaketa; int kraj; if (porukaUBitovimaDekriptiranje.Length < (i + 1) * velicinaPaketa) { kraj = porukaUBitovimaDekriptiranje.Length; } else { kraj = (i + 1) * velicinaPaketa; } int brojacDekriptiranje = 0; byte[] pomocnoPoljeDekriptiranje = new byte[velicinaPaketa]; for (int j = pocetak; j < kraj; j++) { pomocnoPoljeDekriptiranje[brojacDekriptiranje] = porukaUBitovimaDekriptiranje[j]; brojacDekriptiranje++; } int pocetakk = i * 256; int krajj; if (porukaUBitovima.Length < (i + 1) * 256) { krajj = porukaUBitovima.Length; } else { krajj = (i + 1) * 256; } int brojac = 0; pomocnoPolje = new byte[256]; for (int k = pocetakk; k < krajj; k++) { pomocnoPolje[brojac] = porukaUBitovima[k]; brojac++; } string hash = dp.VratiHash(Encoding.UTF8.GetString(pomocnoPolje)); provjera = provjera && dp.ProvjeraDigitalnogPotpisa(hash, Encoding.UTF8.GetString(pomocnoPoljeDekriptiranje), kljuc); } if (provjera) { MessageBox.Show("Poruka nije izmjenjena."); } else { MessageBox.Show("Poruka je izmjenjena."); } }
private void uiActionPosalji_Click(object sender, EventArgs e) { kriptiraniHashSlanje = ""; string poruka = uiInputTekstZaSlanje.Text; DigitalniPotpis dp = new DigitalniPotpis(); UpisIspisDatoteka uid = new UpisIspisDatoteka(); string kljuc = uid.Citanje("D:\\DS\\1. SEMESTAR\\SIS\\klijent2\\klijent2\\klijent2\\privatniKljucKlijent.txt"); int brojPaketaZaHash; byte[] porukaUBitovima = Encoding.UTF8.GetBytes(poruka); if (porukaUBitovima.Length % 256 == 0) { brojPaketaZaHash = porukaUBitovima.Length / 256; } else { brojPaketaZaHash = (porukaUBitovima.Length / 256) + 1; } for (int i = 0; i < brojPaketaZaHash; i++) { int pocetak = i * 256; int kraj; if (porukaUBitovima.Length < (i + 1) * 256) { kraj = porukaUBitovima.Length; } else { kraj = (i + 1) * 256; } int brojac = 0; byte[] pomocnoPolje = new byte[256]; for (int j = pocetak; j < kraj; j++) { pomocnoPolje[brojac] = porukaUBitovima[j]; brojac++; } kriptiraniHashSlanje = kriptiraniHashSlanje + dp.KriptiraniHash(dp.VratiHash(Encoding.UTF8.GetString(pomocnoPolje)), kljuc); } string digitalniPotpis = "poruka:" + poruka + "kriptiraniHash:" + kriptiraniHashSlanje; byte[] slanje = new byte[1024]; slanje = UTF8Encoding.UTF8.GetBytes(digitalniPotpis); int brojPaketa; if (slanje.Length > 1024) { if (slanje.Length % 1024 == 0) { brojPaketa = slanje.Length / 1024; } else { brojPaketa = slanje.Length / 1024; brojPaketa++; } byte[] brojPaketaBitovi = UTF8Encoding.UTF8.GetBytes(brojPaketa.ToString()); for (int i = 0; i < brojPaketa + 1; i++) { if (i == 0) { PosaljiPoruku(brojPaketaBitovi); } else { int pocetak = (i - 1) * 1024; int kraj; if (slanje.Length < i * 1024) { kraj = slanje.Length; } else { kraj = i * 1024; } byte[] pomocnoPolje = new byte[1024]; int brojac = 0; for (int j = pocetak; j < kraj; j++) { pomocnoPolje[brojac] = slanje[j]; brojac++; } PosaljiPoruku(pomocnoPolje);; } } } else { brojPaketa = 1; PosaljiPoruku(UTF8Encoding.UTF8.GetBytes(brojPaketa.ToString())); PosaljiPoruku(slanje); } uiInputTekstZaSlanje.Text = ""; }