using System.Security.Cryptography;
using System.Runtime.Remoting.Metadata.W3cXsd2001;
public static void Main()
CSRFclass csrfkeyivrandom = createnew();
string stringtoEncrpyt = "Hi I am a string that i need to encrypt";
byte[] encryptedValue = EncryptStringToBytes_Aes(stringtoEncrpyt,csrfkeyivrandom.key, csrfkeyivrandom.iv );
SoapHexBinary encryptedValueHex = new SoapHexBinary(encryptedValue);
Console.WriteLine("1st encrpyted String :"+encryptedValueHex.ToString());
CSRFclass csrfkeyivrandom2 = createnew();
string stringtoEncrpyt2 = "Hi I am a string that i need to encrypt";
byte[] encryptedValue2 = EncryptStringToBytes_Aes(stringtoEncrpyt2,csrfkeyivrandom2.key, csrfkeyivrandom2.iv );
SoapHexBinary encryptedValueHex2 = new SoapHexBinary(encryptedValue2);
Console.WriteLine("2nd encrpyted String :"+encryptedValueHex2.ToString());
private static CSRFclass createnew()
CSRFclass newstuff = new CSRFclass();
newstuff.key = GenerateCrytpoRandomBytes(32);
newstuff.iv = GenerateCrytpoRandomBytes(16);
public static byte[] GenerateCrytpoRandomBytes(int bytes)
byte[] numbers = new byte[bytes];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetNonZeroBytes(numbers);
public static byte[] EncryptStringToBytes_Aes(string plainText, byte[] key, byte[] iv)
using (MemoryStream mStream = new MemoryStream())
byte[] inputBytes = Encoding.ASCII.GetBytes(plainText);
AesManaged aes = new AesManaged();
CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(), CryptoStreamMode.Write);
cStream.Write(inputBytes, 0, inputBytes.Length);
cStream.FlushFinalBlock();
output = mStream.ToArray();
public static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] key, byte[] iv)
using (MemoryStream mStream = new MemoryStream())
AesManaged aes = new AesManaged();
CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(), CryptoStreamMode.Write);
cStream.Write(cipherText, 0, cipherText.Length);
cStream.FlushFinalBlock();
output = mStream.ToArray();
return Encoding.ASCII.GetString(output);