Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.30 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Security.Cryptography;
  4.  
  5. namespace AES_PRJ
  6. {
  7.     class AESPRJ
  8.     {
  9.         public static void Main()
  10.         {
  11.             Console.Write("codificacao/decodificacao [c/d]:");
  12.             string modo = Console.ReadLine();
  13.             if (modo == "c") {
  14.  
  15.                 try
  16.                 {
  17.                     System.Console.Write("Mensagem:");
  18.                     string msg = System.Console.ReadLine();
  19.                     System.Console.Write("Chave");
  20.                     string chave = System.Console.ReadLine();
  21.                
  22.                     Aes defAes = Aes.Create();
  23.                     defAes.Key = strtobytearray(chave); //testar
  24.                                
  25.                     byte[] codificado = codificar(msg,defAes.Key,defAes.IV);
  26.  
  27.                     Console.Write("codificado: ");
  28.                     Console.Write(codificado.ToString());
  29.                 }
  30.                 catch (Exception Exc)
  31.                 {
  32.                     Console.WriteLine("Exception: ", Exc.Message);
  33.                 }
  34.             }
  35.             else
  36.             if (modo == "d")
  37.             {
  38.                 System.Console.Write("cifrado:");
  39.                 string msg = System.Console.ReadLine();
  40.                 System.Console.Write("cifra");
  41.                 string chave = System.Console.ReadLine();
  42.  
  43.                 Aes defAes = Aes.Create();
  44.                 defAes.Key = strtobytearray(chave); //testar
  45.  
  46.                 byte[] codificado = strtobytearray(msg);
  47.                 string decodificado = decodificar(codificado, defAes.Key, defAes.IV);
  48.  
  49.                 Console.Write("decodificado: ");
  50.                 Console.Write(decodificado);
  51.             }
  52.             else
  53.                 Console.WriteLine("digite [c] para codificar, ou [d] para decodificar");
  54.         }
  55.  
  56.        
  57.         static byte[] codificar(string msg, byte[] chave, byte[] IV)
  58.         {
  59.             MemoryStream mem = null;
  60.             CryptoStream cry = null;
  61.             StreamWriter stw = null;
  62.  
  63.             Aes defAes = null;
  64.  
  65.             try
  66.             {
  67.                 defAes = Aes.Create();
  68.                 defAes.Key = chave;
  69.                 defAes.IV  = IV;
  70.  
  71.  
  72.                 ICryptoTransform Encriptador = defAes.CreateEncryptor(defAes.Key, defAes.IV);
  73.  
  74.                 mem = new MemoryStream();
  75.                 cry = new CryptoStream(mem, Encriptador, CryptoStreamMode.Write);
  76.                 stw = new StreamWriter(cry);
  77.  
  78.                 stw.Write(msg);
  79.             }
  80.             finally
  81.             {
  82.                 stw.Close();
  83.                 cry.Close();
  84.                 mem.Close();
  85.                 defAes.Clear();
  86.             }
  87.  
  88.             return mem.ToArray();
  89.         }
  90.  
  91.         static string decodificar(byte[] cifrado, byte[] chave, byte[] IV)
  92.         {
  93.             MemoryStream mem = null;
  94.             CryptoStream cry = null;
  95.             StreamReader str = null;
  96.  
  97.             Aes defAes = null;
  98.  
  99.  
  100.             string msg = null;
  101.  
  102.         try
  103.     {
  104.                 defAes = Aes.Create();
  105.                 defAes.Key = chave;
  106.                 defAes.IV  = IV;
  107.  
  108.             ICryptoTransform decodificador = defAes.CreateDecryptor(defAes.Key, defAes.IV);
  109.  
  110.             mem = new MemoryStream(cifrado);
  111.             cry = new CryptoStream(mem, decodificador, CryptoStreamMode.Read);
  112.             str = new StreamReader(cry);
  113.  
  114.             msg = str.ReadToEnd();
  115.  
  116.         }
  117.             finally
  118.         {
  119.              str.Close();
  120.              cry.Close();
  121.              mem.Close();
  122.              defAes.Clear();
  123.         }
  124.  
  125.             return msg;
  126.  
  127.         }
  128.        
  129.        
  130.         static byte[] strtobytearray(string plaintext)
  131.         {
  132.             byte[] barray = new byte[plaintext.Length];
  133.  
  134.             for (int i = 0; i < plaintext.Length; i++)
  135.             {
  136.                 barray[i] = (byte)plaintext[i];
  137.             }
  138.        
  139.             return barray;
  140.         }
  141.  
  142.         static string bytearraytostr(byte[] barray)
  143.         {
  144.             string str = "";
  145.  
  146.             if ((barray.Length % 2) != 0)
  147.             {
  148.                 Console.WriteLine("cada byte deve ser represetando por 2 caracteres hexadecimais [0~f]");
  149.             }
  150.             else
  151.             {
  152.                 for (int i = 0; i < barray.Length; i += 2)
  153.                 {
  154.                     str = str + ((char)barray[i] + barray[i + 1]);
  155.                 }
  156.             }
  157.             return str;
  158.         }
  159.  
  160.     }
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement