using static System.Console;
using System.Security.Cryptography;
private const string IV = "HR$2pIjHR$2pIj12";
public static void Main()
var cripto = criptografar(senha, entrada);
var cripto64 = Convert.ToBase64String(cripto);
WriteLine($"Representação em string (em base64) da criptografia: {cripto64}");
var decrip = descriptografar(senha, cripto);
WriteLine($"Texto original (pelo byte[]): {Encoding.UTF8.GetString(decrip)}");
var bytes = Convert.FromBase64String(cripto64);
var decBase64 = descriptografar(senha, bytes);
WriteLine($"Texto original (string base64): {Encoding.UTF8.GetString(decBase64)}");
static byte[] criptografar(string senha, string entrada)
string keyMd5 = Encryptor.GerarHashMd5(senha);
return Encryptor.encryptdata(Encoding.UTF8.GetBytes(entrada), keyMd5, IV);
static byte[] descriptografar(string senha, byte[] criptografado)
string keyMd5 = Encryptor.GerarHashMd5(senha);
return Encryptor.decryptdata(criptografado, keyMd5, IV);
public static string GerarHashMd5(string input)
MD5 md5Hash = MD5.Create();
byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
sBuilder.Append(data[i].ToString("x2"));
return sBuilder.ToString();
static public byte[] encryptdata(byte[] bytearraytoencrypt, string key, string iv)
AesCryptoServiceProvider dataencrypt = new AesCryptoServiceProvider();
dataencrypt.BlockSize = 128;
dataencrypt.KeySize = 128;
dataencrypt.Key = System.Text.Encoding.UTF8.GetBytes(key);
dataencrypt.IV = System.Text.Encoding.UTF8.GetBytes(iv);
dataencrypt.Padding = PaddingMode.PKCS7;
dataencrypt.Mode = CipherMode.CBC;
ICryptoTransform crypto1 = dataencrypt.CreateEncryptor(dataencrypt.Key, dataencrypt.IV);
byte[] encrypteddata = crypto1.TransformFinalBlock(bytearraytoencrypt, 0, bytearraytoencrypt.Length);
static public byte[] decryptdata(byte[] bytearraytodecrypt, string key, string iv)
AesCryptoServiceProvider keydecrypt = new AesCryptoServiceProvider();
keydecrypt.BlockSize = 128;
keydecrypt.KeySize = 128;
keydecrypt.Key = System.Text.Encoding.UTF8.GetBytes(key);
keydecrypt.IV = System.Text.Encoding.UTF8.GetBytes(iv);
keydecrypt.Padding = PaddingMode.PKCS7;
keydecrypt.Mode = CipherMode.CBC;
ICryptoTransform crypto1 = keydecrypt.CreateDecryptor(keydecrypt.Key, keydecrypt.IV);
byte[] returnbytearray = crypto1.TransformFinalBlock(bytearraytodecrypt, 0, bytearraytodecrypt.Length);