예제 #1
0
        private void uiActionKreirajKljuceve_Click(object sender, EventArgs e)
        {
            DigitalniPotpis dp = new DigitalniPotpis();

            dp.KreiranjeKluceva();
        }
예제 #2
0
        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.");
            }
        }
예제 #3
0
        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 = "";
        }