Exemple #1
0
        /// <summary>
        /// Metoda koja služi za dekripciju datoteke.
        /// Za dekripciju same datoteke važan je privatni ključ koji se prosljeđuje ovoj metodi te ona pomoću toga ključa
        /// rsa algoritmom dekriptira ključ kojim je enkriptirana datoteka.
        /// Zatim se taj ključ i inicijalizacijski vektor pridružuje aes objektu koji zatim može dekriptirati sam sadržaj datoteke.
        /// </summary>
        /// <param name="file"></param>
        /// <param name="kljuc"></param>
        /// <param name="iv"></param>
        /// <param name="privatniKljuc"></param>
        /// <returns></returns>
        public static byte[] DecryptFile(byte[] file, string kljuc, byte[] iv, string privatniKljuc)
        {
            AesEnkripcija aes = new AesEnkripcija();
            Enkripcija    rsa = new RsaEnkripcija();

            rsa.PridruziPrivatniKljuc(privatniKljuc);

            var dekriptiraniKljuc = rsa.DecryptData(kljuc);

            aes.PridruziKljucIV(Convert.FromBase64String(dekriptiraniKljuc), iv);
            var decryptedData = aes.DecryptFile(file);

            return(decryptedData);
        }
Exemple #2
0
        /// <summary>
        /// Metoda koja služi za dekripciju poruke s obzirom na sam sadržaj poruke.
        /// Za dekripciju same poruke važan je privatni ključ koji se prosljeđuje ovoj metodi te ona pomoću toga ključa
        /// rsa algoritmom dekriptira ključ kojim je enkriptirana poruka.
        /// Zatim se taj ključ i inicijalizacijski vektor pridružuje aes objektu koji zatim može dekriptirati sam sadržaj poruke.
        /// </summary>
        /// <param name="poruka"></param>
        /// <param name="privatniKljuc"></param>
        /// <returns></returns>
        public static string DecryptData(Poruka poruka, string privatniKljuc)
        {
            Enkripcija aes = new AesEnkripcija();
            Enkripcija rsa = new RsaEnkripcija();

            rsa.PridruziPrivatniKljuc(privatniKljuc);

            var dekriptiraniKljuc = rsa.DecryptData(poruka.Paket.EnkriptiraniKljuc);

            aes.PridruziKljucIV(Convert.FromBase64String(dekriptiraniKljuc), poruka.Paket.Iv);
            var decryptedData = aes.DecryptData(poruka.Paket.EnkriptiraniPodaci);

            return(decryptedData);
        }
Exemple #3
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);
        }
Exemple #4
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);
        }
Exemple #5
0
        /// <summary>
        /// Pomoćna funkcija za funkciju RegistrirajKorisnika() koja zapisuje sve potrebne ključeve u bazu podataka(Javni,Privatni,2FA)
        /// </summary>
        /// <param name="connection"></param>
        private void ZapisiKljuceveUBazu(SqlConnection connection)
        {
            var        command    = new SqlCommand();
            Enkripcija enkripcija = new RsaEnkripcija();

            enkripcija.AssignRsaKeys();
            JavniKljuc = enkripcija.DohvatiJavniKljuc();

            command             = new SqlCommand();
            command.Connection  = connection;
            command.CommandType = CommandType.Text;
            command.CommandText = "UPDATE Korisnik SET JavniKljuc = @JavniKljuc WHERE Username=@Username";
            command.Parameters.AddWithValue("@JavniKljuc", JavniKljuc);
            command.Parameters.AddWithValue("@Username", Username);
            command.ExecuteNonQuery();

            command             = new SqlCommand();
            command.Connection  = connection;
            command.CommandType = CommandType.Text;
            command.CommandText = "INSERT INTO PrivatniKljucevi(Username,PrivatniKljuc) VALUES (@Username,@PrivatniKljuc)";
            command.Parameters.AddWithValue("@PrivatniKljuc", enkripcija.DohvatiPrivatniKljuc());
            command.Parameters.AddWithValue("@Username", Username);
            command.ExecuteNonQuery();

            if (Kljuc2FA == "DA")
            {
                Verficiranje2FA verificiranje = new Verficiranje2FA();
                Kljuc2FA            = verificiranje.GenerirajKljuc2FA();
                command             = new SqlCommand();
                command.Connection  = connection;
                command.CommandType = CommandType.Text;
                command.CommandText = "UPDATE Korisnik SET Kljuc2FA = @Kljuc2FA WHERE Username=@Username";
                command.Parameters.AddWithValue("@Kljuc2FA", Kljuc2FA);
                command.Parameters.AddWithValue("@Username", Username);
                command.ExecuteNonQuery();
            }

            DropboxManager dropbox = new DropboxManager();

            dropbox.CreateANewFolder(Username);
        }
Exemple #6
0
 /// <summary>
 /// Event handler koji se aktivira prilikom klika na gumb Generiraj. Na temelju pripadajućeg odabira vrste algoritma
 /// generiraju se potrebni ključevi i inicijalizacijski vektori potrebni za određenu vrsu algoritma enkripcije.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void gumbGeneriraj_Click(object sender, EventArgs e)
 {
     if (odabirAlgoritam.SelectedValue == (object)"AES")
     {
         Enkripcija aesEnkripcija = new AesEnkripcija();
         aesEnkripcija.GenerirajKljucIV();
         odabirPrvo.Text  = Convert.ToBase64String(aesEnkripcija.DohvatiAESKljuc());
         odabirDrugo.Text = Convert.ToBase64String(aesEnkripcija.DohvatiIV());
         trenutna         = aesEnkripcija;
     }
     if (odabirAlgoritam.SelectedValue == (object)"RSA")
     {
         Enkripcija rsaEnkripcija = new RsaEnkripcija();
         rsaEnkripcija.AssignRsaKeys();
         odabirPrvo.Text  = rsaEnkripcija.DohvatiJavniKljuc();
         odabirDrugo.Text = rsaEnkripcija.DohvatiPrivatniKljuc();
         trenutna         = rsaEnkripcija;
     }
     if (odabirAlgoritam.SelectedValue == (object)"DES")
     {
         Enkripcija des = new DesEnkripcija();
         des.GenerirajKljucIV();
         odabirPrvo.Text  = Convert.ToBase64String(des.DohvatiAESKljuc());
         odabirDrugo.Text = Convert.ToBase64String(des.DohvatiIV());
         trenutna         = des;
     }
     if (odabirAlgoritam.SelectedValue == (object)"TripleDES")
     {
         Enkripcija tripleDes = new TripleDesEnkripcija();
         tripleDes.GenerirajKljucIV();
         odabirPrvo.Text  = Convert.ToBase64String(tripleDes.DohvatiAESKljuc());
         odabirDrugo.Text = Convert.ToBase64String(tripleDes.DohvatiIV());
         trenutna         = tripleDes;
     }
     gumbEnkriptiraj.Enabled = true;
 }