Cifrar archivos Algoritmo Des C#

He hecho pequeño programa para encriptar y desencriptar archivos.
La contraseña tiene que ser de 8 letras ya que el cifrado tiene preestablecido
ese numero.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Mime;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace Program
{
    class CryptResource
    {
        static void Main()
        {
            try
            {
                Console.Title = "CrypterPro 8-bit";
                Console.Clear();
                Console.Write("Path: ");
                string filepath1 = Console.ReadLine();
                Console.Write("Key: ");
                string key1 = Console.ReadLine();
                while (true)
                {
                    Console.Clear();
                    Console.Write("1-.Encrypt\n");
                    Console.Write("2-.Decrypt\n");
                    Console.Write("3-.Exit\n");
                    Console.Write("Opcion: ");
                    int op = Console.Read();
                    switch (op)
                    {
                        case '1':
                            EncryptFile(filepath1, key1);
                            break;
                        case '2':
                            DecryptFile(filepath1, key1);
                            break;
                        case '3':
                            Environment.Exit(1);
                            break;
                    }
                }
            }
            catch (Exception)
            {
                Console.Clear();
                Console.Write("Error 0\n");
                Console.Write("Something went wrong\n");
                Console.Write("Restart program\n");
                Console.ReadKey();
                Environment.Exit(1);
            }
        }
        static void EncryptFile(string filePath, string key)
        {
            byte[] plainContent = File.ReadAllBytes(filePath);
            using (var DES = new DESCryptoServiceProvider())
            {
                DES.IV = Encoding.UTF8.GetBytes(key);
                DES.Key = Encoding.UTF8.GetBytes(key);
                DES.Mode = CipherMode.CBC;
                DES.Padding = PaddingMode.PKCS7;


                using (var memStream = new MemoryStream())
                {
                    CryptoStream cryptoStream = new CryptoStream(memStream, DES.CreateEncryptor(),
                        CryptoStreamMode.Write);

                    cryptoStream.Write(plainContent, 0, plainContent.Length);
                    cryptoStream.FlushFinalBlock();
                    File.WriteAllBytes(filePath, memStream.ToArray());
                    Console.Clear();
                }
            }
        }

        private static void DecryptFile(string filePath, string key)
        {
            byte[] encrypted = File.ReadAllBytes(filePath);
            using (var DES = new DESCryptoServiceProvider())
            {
                DES.IV = Encoding.UTF8.GetBytes(key);
                DES.Key = Encoding.UTF8.GetBytes(key);
                DES.Mode = CipherMode.CBC;
                DES.Padding = PaddingMode.PKCS7;


                using (var memStream = new MemoryStream())
                {
                    CryptoStream cryptoStream = new CryptoStream(memStream, DES.CreateDecryptor(),
                        CryptoStreamMode.Write);

                    cryptoStream.Write(encrypted, 0, encrypted.Length);
                    cryptoStream.FlushFinalBlock();
                    File.WriteAllBytes(filePath, memStream.ToArray());
                    Console.Clear();
                }
            }
        }
    }
}

Version: .Net Framework 4.7.2
Codigo en C#
El arcihvo ya compilado: Mega

Comentarios

Publicar un comentario

Entradas populares de este blog

Editar variable string y int desde el programa C#

Keylogger en C++