Last active
March 1, 2017 22:38
-
-
Save PaulNichols/bdd245d558dd165dc5f2ee3e7fc4ab57 to your computer and use it in GitHub Desktop.
Cryptography - AES Encyption
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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