using System.Collections.Generic;
using System.Security.Cryptography;
public static void Main()
string encrypt_result = Encrypt("test");
Console.WriteLine("Resultado de encriptacion:: " + encrypt_result);
string decrypt_result = Decrypt(encrypt_result);
Console.WriteLine("Resultado de desencriptacion:: " + decrypt_result);
static readonly string password = "P455W0rd_Disa";
public static string Encrypt(string plainText)
var bytesToBeEncrypted = Encoding.UTF8.GetBytes(plainText);
var passwordBytes = Encoding.UTF8.GetBytes(password);
passwordBytes = SHA512.Create().ComputeHash(passwordBytes);
var bytesEncrypted = Encrypt(bytesToBeEncrypted, passwordBytes);
return Convert.ToBase64String(bytesEncrypted);
public static string Decrypt(string encryptedText)
if (encryptedText == null)
var bytesToBeDecrypted = Convert.FromBase64String(encryptedText);
var passwordBytes = Encoding.UTF8.GetBytes(password);
passwordBytes = SHA512.Create().ComputeHash(passwordBytes);
var bytesDecrypted = Decrypt(bytesToBeDecrypted, passwordBytes);
return Encoding.UTF8.GetString(bytesDecrypted);
private static byte[] Encrypt(byte[] bytesToBeEncrypted, byte[] passwordBytes)
byte[] encryptedBytes = null;
var saltBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };
using (MemoryStream ms = new MemoryStream())
using (RijndaelManaged AES = new RijndaelManaged())
var key = new Rfc2898DeriveBytes(passwordBytes, saltBytes, 1000);
AES.Key = key.GetBytes(AES.KeySize / 8);
AES.IV = key.GetBytes(AES.BlockSize / 8);
AES.Mode = CipherMode.CBC;
using (var cs = new CryptoStream(ms, AES.CreateEncryptor(), CryptoStreamMode.Write))
cs.Write(bytesToBeEncrypted, 0, bytesToBeEncrypted.Length);
encryptedBytes = ms.ToArray();
private static byte[] Decrypt(byte[] bytesToBeDecrypted, byte[] passwordBytes)
byte[] decryptedBytes = null;
var saltBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };
using (MemoryStream ms = new MemoryStream())
using (RijndaelManaged AES = new RijndaelManaged())
var key = new Rfc2898DeriveBytes(passwordBytes, saltBytes, 1000);
AES.Key = key.GetBytes(AES.KeySize / 8);
AES.IV = key.GetBytes(AES.BlockSize / 8);
AES.Mode = CipherMode.CBC;
using (var cs = new CryptoStream(ms, AES.CreateDecryptor(), CryptoStreamMode.Write))
cs.Write(bytesToBeDecrypted, 0, bytesToBeDecrypted.Length);
decryptedBytes = ms.ToArray();