예제 #1
0
        /// <summary>
        /// Metoda koja preuzima datoteku sa dropbox servera. Prvo se skida pomoćna .crypto datoteka te se iz nje čita inicijalizacijski
        /// vektor i ključ. Zatim se dohvaća glavna datoteka sa dropbox servera koja se na kraju dekriptira uz pomoć inicijalizacijskoga
        /// vektora, aes ključa i privatnoga ključa prijavljenoga korisnika.
        /// </summary>
        /// <param name="primatelj"></param>
        /// <param name="posiljatelj"></param>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public async Task <byte[]> Download(string primatelj, string posiljatelj, string fileName)
        {
            EnkripcijskiPaket paket = new EnkripcijskiPaket();

            byte[] file;
            byte[] helpFile;
            string fullName = posiljatelj + "_" + fileName;

            string downloadFilePath = path + primatelj + "/primljeno/" + fullName;
            string helpFilePath     = path + primatelj + "/primljeno/" + Path.GetFileNameWithoutExtension(fullName) + ".crypto";

            using (var dbx = new DropboxClient(token))
            {
                using (var response = await dbx.Files.DownloadAsync(helpFilePath))
                {
                    helpFile = await response.GetContentAsByteArrayAsync();

                    using (var ms = new MemoryStream(helpFile))
                    {
                        StreamReader msReader = new StreamReader(ms);
                        paket.EnkriptiraniKljuc = msReader.ReadLine();
                        paket.Iv = Convert.FromBase64String((msReader.ReadLine()));
                    }
                }

                using (var response = await dbx.Files.DownloadAsync(downloadFilePath))
                {
                    file = await response.GetContentAsByteArrayAsync();
                }
            }

            file = HibridnaEnkripcija.DecryptFile(file, paket.EnkriptiraniKljuc, paket.Iv, DohvatiPrivatniKljuc(primatelj));
            return(file);
        }
예제 #2
0
        /// <summary>
        /// Metoda koja služi za enkripciju datoteke.
        /// Prvo se izgenerira ključ i inicijalizacijski vekor pomoću kojih se aes algoritmom enkriptira sadm sadržaj datoteke.
        /// Zatim se izgenerirani ključ enkriptira pomoću rsa algoritma i to zahvaljujući javnome ključu koji se prosljeđuje
        /// samoj metodi.
        /// </summary>
        /// <param name="file"></param>
        /// <param name="javniKljuc"></param>
        /// <returns></returns>
        public static EnkripcijskiPaket EncryptFile(byte[] file, string javniKljuc)
        {
            EnkripcijskiPaket novi = new EnkripcijskiPaket();
            AesEnkripcija     aes  = new AesEnkripcija();
            Enkripcija        rsa  = new RsaEnkripcija();

            rsa.PridruziJavniKljuc(javniKljuc);
            aes.GenerirajKljucIV();

            novi.Iv = aes.DohvatiIV();
            novi.PridruziDatoteku(aes.EncryptFile(file));
            novi.EnkriptiraniKljuc = rsa.EncryptData(Convert.ToBase64String(aes.DohvatiAESKljuc()));

            return(novi);
        }
예제 #3
0
        /// <summary>
        /// Metoda koja služi za enkripciju poruke s obzirom na sam sadržaj poruke.
        /// Prvo se izgenerira ključ i inicijalizacijski vekor pomoću kojih se aes algoritmom enkriptira sadm sadržaj poruke.
        /// Zatim se izgenerirani ključ enkriptira pomoću rsa algoritma i to zahvaljujući javnome ključu koji se prosljeđuje
        /// samoj metodi.
        /// </summary>
        /// <param name="poruka"></param>
        /// <param name="javniKljuc"></param>
        /// <returns></returns>
        public static EnkripcijskiPaket EncryptData(string poruka, string javniKljuc)
        {
            EnkripcijskiPaket novi = new EnkripcijskiPaket();
            Enkripcija        aes  = new AesEnkripcija();
            Enkripcija        rsa  = new RsaEnkripcija();

            rsa.PridruziJavniKljuc(javniKljuc);
            aes.GenerirajKljucIV();

            novi.Iv = aes.DohvatiIV();
            novi.EnkriptiraniPodaci = aes.EncryptData(poruka);
            novi.EnkriptiraniKljuc  = rsa.EncryptData(Convert.ToBase64String(aes.DohvatiAESKljuc()));

            return(novi);
        }
예제 #4
0
        /// <summary>
        /// Event Handler koji se aktivira prilikom klika na određeni tab u formi. Ovisno na koji se tab klikne
        /// šalju se odgovarajući podaci prema serveru na temelju kojih se dohavaćaju poslane ili primljene poruke.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tabKontrola_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (tabKontrola.SelectedIndex == 1)
            {
                dataGridViewPoslano.Rows.Clear();
                dataGridViewPoslano.Refresh();
                klijent              = new TcpKlijent();
                listaPoruka          = new ListaPoruka();
                listaPoruka.Username = prijavljeniKorisnik.Username;
                klijent.PosaljiServeru(listaPoruka, "DohvatiPoslanePoruke");
                listaPoruka        = (ListaPoruka)klijent.PrimiOdServera();
                listaPoruka.Poruke = listaPoruka.Poruke.OrderByDescending(x => x.DatumSlanja).ToList();

                for (int i = 0; i < listaPoruka.Poruke.Count; i++)
                {
                    Poruka            poruka = listaPoruka.Poruke[i];
                    EnkripcijskiPaket paket  = listaPoruka.Poruke[i].Paket;
                    dataGridViewPoslano.Rows.Add(poruka, poruka.Posiljatelj, poruka.Primatelj, poruka.DatumSlanja, paket.EnkriptiraniKljuc, paket.EnkriptiraniPodaci, Convert.ToBase64String(paket.Iv));
                }
            }

            if (tabKontrola.SelectedIndex == 0)
            {
                dataGridViewPrimljeno.Rows.Clear();
                dataGridViewPrimljeno.Refresh();
                klijent              = new TcpKlijent();
                listaPoruka          = new ListaPoruka();
                listaPoruka.Username = prijavljeniKorisnik.Username;
                klijent.PosaljiServeru(listaPoruka, "DohvatiPrimljenePoruke");
                listaPoruka        = (ListaPoruka)klijent.PrimiOdServera();
                listaPoruka.Poruke = listaPoruka.Poruke.OrderByDescending(x => x.DatumSlanja).ToList();

                for (int i = 0; i < listaPoruka.Poruke.Count; i++)
                {
                    Poruka            poruka = listaPoruka.Poruke[i];
                    EnkripcijskiPaket paket  = listaPoruka.Poruke[i].Paket;
                    dataGridViewPrimljeno.Rows.Add("", poruka, poruka.Posiljatelj, poruka.Primatelj, poruka.DatumSlanja, paket.EnkriptiraniKljuc, paket.EnkriptiraniPodaci, Convert.ToBase64String(paket.Iv));
                }
            }
        }
예제 #5
0
        /// <summary>
        /// Konstuktor FormePregled koji inicijalizira formu, oblikuje gridview te odmah dohvaća primljenje poruke korisnika s obzirom
        /// da je tab aktivan prilikom inicijalizacije forme
        /// </summary>
        /// <param name="forma"></param>
        /// <param name="korisnik"></param>
        public FormaPregled(Form1 forma, Korisnik korisnik)
        {
            InitializeComponent();
            Dizajner.FormaBezOkna(this);
            glavnaForma         = forma;
            prijavljeniKorisnik = korisnik;
            FormirajDataGridove();

            klijent              = new TcpKlijent();
            listaPoruka          = new ListaPoruka();
            listaPoruka.Username = prijavljeniKorisnik.Username;
            klijent.PosaljiServeru(listaPoruka, "DohvatiPrimljenePoruke");
            listaPoruka        = (ListaPoruka)klijent.PrimiOdServera();
            listaPoruka.Poruke = listaPoruka.Poruke.OrderByDescending(x => x.DatumSlanja).ToList();

            for (int i = 0; i < listaPoruka.Poruke.Count; i++)
            {
                Poruka            poruka = listaPoruka.Poruke[i];
                EnkripcijskiPaket paket  = listaPoruka.Poruke[i].Paket;
                dataGridViewPrimljeno.Rows.Add("", poruka, poruka.Posiljatelj, poruka.Primatelj, poruka.DatumSlanja, paket.EnkriptiraniKljuc, paket.EnkriptiraniPodaci, Convert.ToBase64String(paket.Iv));
            }
        }
예제 #6
0
파일: Poruka.cs 프로젝트: foivz/r16003
 /// <summary>
 /// Metoda koja enkriptira sadrzaj na temelju javnoga ključa te stvara enkripcijski paket koji pridružuje
 /// svom enkripcijskom paketu.
 /// </summary>
 /// <param name="sadrzaj"></param>
 /// <param name="javniKljuc"></param>
 public void FormirajEnkripcijskiPaket(string sadrzaj, string javniKljuc)
 {
     Paket = HibridnaEnkripcija.EncryptData(sadrzaj, javniKljuc);
 }
예제 #7
0
파일: Poruka.cs 프로젝트: foivz/r16003
 /// <summary>
 /// Konstruktor Klase Poruka - inicijalizira prazni enkripcijski paket koj se kasnije popunjava
 /// </summary>
 public Poruka()
 {
     Tip   = "Poruka";
     Paket = new EnkripcijskiPaket();
 }