Exemple #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("\t\t\t\t\t\t\t- LAB 6 -\n\nKevin Romero 1047519\nJosé De León 1072619");

            RSA_Algorithm rsa        = new RSA_Algorithm();
            Parameters    parameters = new Parameters()
            {
                p = 9601, q = 8731
            };
            string texto = "Mejor que buscar la verdad sin método es no pensar nunca en ella, porque los estudios desordenados y las meditaciones oscuras turban las luces naturales de la razón y ciegan la inteligencia. -René Descártes";

            Console.WriteLine("\nTEXTO ORIGINAL          \n" + texto);


            parameters = rsa.GetKey(parameters);
            Console.WriteLine("\n-------- RSA -------------------------------------------------------------------------------------------------------");

            Console.WriteLine("KEY\nValor n: " + parameters.n + "\nValor D: " + parameters.d + "\nValor E: " + parameters.e);


            Console.WriteLine("\nTEXTO CIFRADO");
            byte[] result_encrypt1 = rsa.Encrypt(parameters, ConvertToByte(texto));
            Console.WriteLine(ConvertToChar(result_encrypt1));


            Console.WriteLine("\nTEXTO DESCIFRADO");
            byte[] result_Decrypt = rsa.Decrypt(parameters, result_encrypt1);
            Console.WriteLine(ConvertToChar(result_Decrypt));


            Console.ReadLine();
        }
        public void EncryptOrDecryptManage(string path, string file_name, string key_name, string nameOut)
        {
            byte[] buffer;

            string file_path = path + $"\\Data\\Entrada\\{file_name}";

            using (FileStream fs = new FileStream(file_path, FileMode.OpenOrCreate))
            {
                buffer = new byte[fs.Length];
                using (var br = new BinaryReader(fs))
                {
                    br.Read(buffer, 0, buffer.Length);
                }
            }

            Parameters parameters    = new Parameters();
            string     file_path_key = path + $"\\Data\\Entrada\\{key_name}";

            string[] nameKey = key_name.Split(".");
            using (StreamReader keys = new StreamReader(file_path_key))
            {
                parameters.n = int.Parse(keys.ReadLine());
                if (nameKey[0] == "private")
                {
                    parameters.d = int.Parse(keys.ReadLine());
                    parameters.e = parameters.d;
                }
                else if (nameKey[0] == "public")
                {
                    parameters.e = int.Parse(keys.ReadLine());
                    parameters.d = parameters.e;
                }
            }

            byte[] result;
            string extension = file_name.Split(".")[1];

            switch (extension)
            {
            case "txt":
                result      = new RSA_Algorithm().Encrypt(parameters, buffer);
                OutFileName = nameOut + ".rsa";
                OutFilePath = path + $"\\Data\\Salida\\" + OutFileName;
                break;

            case "rsa":
                result      = new RSA_Algorithm().Decrypt(parameters, buffer);
                OutFileName = nameOut + ".txt";
                OutFilePath = path + $"\\Data\\Salida\\" + OutFileName;
                break;

            default: throw new Exception();
            }
            using (var fs = new FileStream(OutFilePath, FileMode.OpenOrCreate))
            {
                fs.Write(result, 0, result.Length);
            }
        }
        public void GeyKeys(string path, string p, string q)
        {
            Parameters parameters = new Parameters();

            try
            {
                if (File.Exists($"{path}/../keys.zip"))
                {
                    File.Delete($"{path}/../keys.zip");
                }
                if (File.Exists(path + "\\public.key"))
                {
                    File.Delete(path + "\\public.key");
                }
                if (File.Exists(path + "\\private.key"))
                {
                    File.Delete(path + "\\private.key");
                }

                parameters.p = int.Parse(p);
                parameters.q = int.Parse(q);
                RSA_Algorithm keys = new RSA_Algorithm();
                parameters = keys.GetKey(parameters);;

                FileStream publickeys = new FileStream((path + "\\public.key"), FileMode.Create);
                publickeys.Close();
                FileStream privatekeys = new FileStream((path + "\\private.key"), FileMode.Create);
                privatekeys.Close();

                using (StreamWriter writer = new StreamWriter(path + "\\public.key"))
                {
                    writer.WriteLine(parameters.n);
                    writer.WriteLine(parameters.e);
                }

                using (StreamWriter writer = new StreamWriter(path + "\\private.key"))
                {
                    writer.WriteLine(parameters.n);
                    writer.WriteLine(parameters.d);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }