To Encrypt or decrypt value using AES algorithm use following functions. Following are generalize function which you can use it directly into your project.
/// <summary>
/// encrypt string using AES algo
/// </summary>
/// <param name="data">data string to encrypt</param>
/// <returns>encrypted string</returns>
public static string GetEncryptedDataAES(string data)
{
AesManaged aesManaged = new AesManaged();
UTF8Encoding utf8 = new UTF8Encoding();
aesManaged.Key = utf8.GetBytes("<Encrypttionkey>");
aesManaged.IV = utf8.GetBytes("<initializationvectorKey>");
// Encrypt the string to an array of bytes.
byte[] encrypted = EncryptStringToBytesAES(data, aesManaged.Key, aesManaged.IV);
data = Convert.ToBase64String(encrypted);
data = HttpContext.Current.Server.UrlEncode(data);
return data;
}
/// <summary>
/// encrypt string to byte using AES algo
/// </summary>
/// <param name="plainText">sring to encrypt</param>
/// <param name="Key"> encrypt key</param>
/// <param name="IV">Initialization vector</param>
/// <returns>byte array of encrypt string</returns>
static byte[] EncryptStringToBytesAES(string plainText, byte[] Key, byte[] IV)
{
// Check arguments.
if (plainText == null || plainText.Length <= 0)
throw new ArgumentNullException("plainText");
if (Key == null || Key.Length <= 0)
throw new ArgumentNullException("Key");
if (IV == null || IV.Length <= 0)
throw new ArgumentNullException("IV");
// Declare the stream used to encrypt to an in memory
// array of bytes.
MemoryStream msEncrypt = null;
// Declare the AesManaged object
// used to encrypt the data.
AesManaged aesAlg = null;
try
{
// Create a AesManaged object
// with the specified key and IV.
aesAlg = new AesManaged();
aesAlg.Key = Key;
aesAlg.IV = IV;
// Create an encryptor to perform the stream transform.
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
// Create the streams used for encryption.
msEncrypt = new MemoryStream();
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
//Write all data to the stream.
swEncrypt.Write(plainText);
}
}
}
finally
{
// Clear the AesManaged object.
if (aesAlg != null)
aesAlg.Clear();
}
// Return the encrypted bytes from the memory stream.
return msEncrypt.ToArray();
}
------------------------------------------------------------------------------------------------------------------------------
/// <summary>
/// decrypt the encrypted string using AES
/// </summary>
/// <param name="data">string to decrypt</param>
/// <returns>decrypted string </returns>
public static string GetDecryptedDataAES(string data)
{
byte[] dataBytes = Convert.FromBase64String(data);
AesManaged aesManaged = new AesManaged();
UTF8Encoding utf8 = new UTF8Encoding();
aesManaged.Key = utf8.GetBytes("<Encrypttionkey>");
aesManaged.IV = utf8.GetBytes("<initializationvectorKey>");
data = DecryptStringFromBytesAES(dataBytes, aesManaged.Key, aesManaged.IV);
return data;
}
/// <summary>
/// decrypt encrypted string from byte using AES algo
/// </summary>
/// <param name="cipherText">byte array to decrypt</param>
/// <param name="Key"> encrypt key</param>
/// <param name="IV">Initialization vector</param>
/// <returns>decrypted string </returns>
private static string DecryptStringFromBytesAES(byte[] cipherText, byte[] Key, byte[] IV)
{
// Check arguments.
if (cipherText == null || cipherText.Length <= 0)
throw new ArgumentNullException("cipherText");
if (Key == null || Key.Length <= 0)
throw new ArgumentNullException("Key");
if (IV == null || IV.Length <= 0)
throw new ArgumentNullException("IV");
// Declare the RijndaelManaged object
// used to decrypt the data.
AesManaged aesAlg = null;
// Declare the string used to hold
// the decrypted text.
string plaintext = null;
try
{
// Create a AesManaged object
// with the specified key and IV.
aesAlg = new AesManaged();
aesAlg.Key = Key;
aesAlg.IV = IV;
// Create a decrytor to perform the stream transform.
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
// Create the streams used for decryption.
using (MemoryStream msDecrypt = new MemoryStream(cipherText))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
// Read the decrypted bytes from the decrypting stream
// and place them in a string.
plaintext = srDecrypt.ReadToEnd();
}
}
}
finally
{
// Clear the AesManaged object.
if (aesAlg != null)
aesAlg.Clear();
}
return plaintext;
}
Happy Coding
1. Encryption:
/// <summary>
/// encrypt string using AES algo
/// </summary>
/// <param name="data">data string to encrypt</param>
/// <returns>encrypted string</returns>
public static string GetEncryptedDataAES(string data)
{
AesManaged aesManaged = new AesManaged();
UTF8Encoding utf8 = new UTF8Encoding();
aesManaged.Key = utf8.GetBytes("<Encrypttionkey>");
aesManaged.IV = utf8.GetBytes("<initializationvectorKey>");
// Encrypt the string to an array of bytes.
byte[] encrypted = EncryptStringToBytesAES(data, aesManaged.Key, aesManaged.IV);
data = Convert.ToBase64String(encrypted);
data = HttpContext.Current.Server.UrlEncode(data);
return data;
}
/// <summary>
/// encrypt string to byte using AES algo
/// </summary>
/// <param name="plainText">sring to encrypt</param>
/// <param name="Key"> encrypt key</param>
/// <param name="IV">Initialization vector</param>
/// <returns>byte array of encrypt string</returns>
static byte[] EncryptStringToBytesAES(string plainText, byte[] Key, byte[] IV)
{
// Check arguments.
if (plainText == null || plainText.Length <= 0)
throw new ArgumentNullException("plainText");
if (Key == null || Key.Length <= 0)
throw new ArgumentNullException("Key");
if (IV == null || IV.Length <= 0)
throw new ArgumentNullException("IV");
// Declare the stream used to encrypt to an in memory
// array of bytes.
MemoryStream msEncrypt = null;
// Declare the AesManaged object
// used to encrypt the data.
AesManaged aesAlg = null;
try
{
// Create a AesManaged object
// with the specified key and IV.
aesAlg = new AesManaged();
aesAlg.Key = Key;
aesAlg.IV = IV;
// Create an encryptor to perform the stream transform.
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
// Create the streams used for encryption.
msEncrypt = new MemoryStream();
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
//Write all data to the stream.
swEncrypt.Write(plainText);
}
}
}
finally
{
// Clear the AesManaged object.
if (aesAlg != null)
aesAlg.Clear();
}
// Return the encrypted bytes from the memory stream.
return msEncrypt.ToArray();
}
------------------------------------------------------------------------------------------------------------------------------
2. Decryption:
/// <summary>
/// decrypt the encrypted string using AES
/// </summary>
/// <param name="data">string to decrypt</param>
/// <returns>decrypted string </returns>
public static string GetDecryptedDataAES(string data)
{
byte[] dataBytes = Convert.FromBase64String(data);
AesManaged aesManaged = new AesManaged();
UTF8Encoding utf8 = new UTF8Encoding();
aesManaged.Key = utf8.GetBytes("<Encrypttionkey>");
aesManaged.IV = utf8.GetBytes("<initializationvectorKey>");
data = DecryptStringFromBytesAES(dataBytes, aesManaged.Key, aesManaged.IV);
return data;
}
/// <summary>
/// decrypt encrypted string from byte using AES algo
/// </summary>
/// <param name="cipherText">byte array to decrypt</param>
/// <param name="Key"> encrypt key</param>
/// <param name="IV">Initialization vector</param>
/// <returns>decrypted string </returns>
private static string DecryptStringFromBytesAES(byte[] cipherText, byte[] Key, byte[] IV)
{
// Check arguments.
if (cipherText == null || cipherText.Length <= 0)
throw new ArgumentNullException("cipherText");
if (Key == null || Key.Length <= 0)
throw new ArgumentNullException("Key");
if (IV == null || IV.Length <= 0)
throw new ArgumentNullException("IV");
// Declare the RijndaelManaged object
// used to decrypt the data.
AesManaged aesAlg = null;
// Declare the string used to hold
// the decrypted text.
string plaintext = null;
try
{
// Create a AesManaged object
// with the specified key and IV.
aesAlg = new AesManaged();
aesAlg.Key = Key;
aesAlg.IV = IV;
// Create a decrytor to perform the stream transform.
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
// Create the streams used for decryption.
using (MemoryStream msDecrypt = new MemoryStream(cipherText))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
// Read the decrypted bytes from the decrypting stream
// and place them in a string.
plaintext = srDecrypt.ReadToEnd();
}
}
}
finally
{
// Clear the AesManaged object.
if (aesAlg != null)
aesAlg.Clear();
}
return plaintext;
}
Happy Coding
No comments:
Post a Comment