Skip to content

Instantly share code, notes, and snippets.

@PaulNichols
Last active March 1, 2017 22:38
Show Gist options
  • Save PaulNichols/bdd245d558dd165dc5f2ee3e7fc4ab57 to your computer and use it in GitHub Desktop.
Save PaulNichols/bdd245d558dd165dc5f2ee3e7fc4ab57 to your computer and use it in GitHub Desktop.
Cryptography - AES Encyption
using System.IO;
using System.Security.Cryptography;
namespace CryptographyInDotNet
{
public class AesEncryption
{
public byte[] GenerateRandomNumber(int length)
{
using (var randomNumberGenerator = new RNGCryptoServiceProvider())
{
var randomNumber = new byte[length];
randomNumberGenerator.GetBytes(randomNumber);
return randomNumber;
}
}
public byte[] Encrypt(byte[] dataToEncrypt, byte[] key, byte[] iv)
{
using (var aes = new AesCryptoServiceProvider())
{
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
aes.Key = key;
aes.IV = iv;
using (var memoryStream = new MemoryStream())
{
var cryptoStream = new CryptoStream(memoryStream, aes.CreateEncryptor(),
CryptoStreamMode.Write);
cryptoStream.Write(dataToEncrypt, 0, dataToEncrypt.Length);
cryptoStream.FlushFinalBlock();
return memoryStream.ToArray();
}
}
}
public byte[] Decrypt(byte[] dataToDecrypt, byte[] key, byte[] iv)
{
using (var aes = new AesCryptoServiceProvider())
{
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
aes.Key = key;
aes.IV = iv;
using (var memoryStream = new MemoryStream())
{
var cryptoStream = new CryptoStream(memoryStream, aes.CreateDecryptor(),
CryptoStreamMode.Write);
cryptoStream.Write(dataToDecrypt, 0, dataToDecrypt.Length);
cryptoStream.FlushFinalBlock();
var decryptBytes = memoryStream.ToArray();
return decryptBytes;
}
}
}
}
}
using System;
using System.Text;
namespace CryptographyInDotNet
{
class Program
{
static void Main()
{
var aes = new AesEncryption();
var key = aes.GenerateRandomNumber(32);
var iv = aes.GenerateRandomNumber(16);
const string original = "Text to encrypt";
var encrypted = aes.Encrypt(Encoding.UTF8.GetBytes(original), key, iv);
var decrypted = aes.Decrypt(encrypted, key, iv);
var decryptedMessage = Encoding.UTF8.GetString(decrypted);
Console.WriteLine("AES Encryption Demonstration in .NET");
Console.WriteLine("------------------------------------");
Console.WriteLine();
Console.WriteLine("Original Text = " + original);
Console.WriteLine("Encrypted Text = " + Convert.ToBase64String(encrypted));
Console.WriteLine("Decrypted Text = " + decryptedMessage);
Console.ReadLine();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment