Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [Test]
- public void EncryptDataAndDecryptData_TestDataIsCorrect()
- {
- AesCryptator aesCryptator = new AesCryptator();
- string stringToEncrypt = "Hello World";
- //Encrypt the string
- string encryptedString = aesCryptator.EncryptData(stringToEncrypt);
- //Decrypt the string
- string decryptedString = aesCryptator.DecryptData(encryptedString);
- Assert.AreEqual(decryptedString, stringToEncrypt);
- }
- public static class CryptationUtility
- {
- public static string BytesToString(byte[] bytesToConvert)
- {
- return Encoding.ASCII.GetString(bytesToConvert);
- }
- public static byte[] StringToBytes(string stringToConvert)
- {
- return Encoding.ASCII.GetBytes(stringToConvert);
- }
- public static string ToUrlSafeBase64(byte[] input)
- {
- return Convert.ToBase64String(input).Replace("+", "-").Replace("/", "_");
- }
- public static byte[] FromUrlSafeBase64(string input)
- {
- return Convert.FromBase64String(input.Replace("-", "+").Replace("_", "/"));
- }
- }
- public class AesCryptator
- {
- private RijndaelManaged _rijndaelObj;
- public AesCryptator()
- {
- _rijndaelObj = new RijndaelManaged();
- }
- public void SetRijndaelObject(RijndaelManaged rijndaelObj)
- {
- _rijndaelObj = rijndaelObj;
- }
- public RijndaelManaged GetRijndaelObject()
- {
- return _rijndaelObj;
- }
- public AesData GetAesData()
- {
- string key = Encoding.ASCII.GetString(_rijndaelObj.Key);
- string iv = Encoding.ASCII.GetString(_rijndaelObj.IV);
- return new AesData(key, iv);
- }
- public string EncryptData(string str)
- {
- //Create a memory stream to hold the encrypted data
- MemoryStream msEncrypt = new MemoryStream();
- try
- {
- //Create a new instance of the CryptoStream class
- CryptoStream csEncrypt = new CryptoStream(msEncrypt, _rijndaelObj.CreateEncryptor(), CryptoStreamMode.Write);
- //Create stream writer
- StreamWriter swEncrypt = new StreamWriter(csEncrypt);
- //Encrypt the string
- swEncrypt.Write(str);
- //Clean up. csEncrypt has to be closed before getting data from memorystream
- swEncrypt.Close();
- csEncrypt.Close();
- //Convert encrypted data to string
- //string encryptedString = Convert.ToBase64String(ms.ToArray());
- string encryptedString = CryptationUtility.ToUrlSafeBase64(msEncrypt.ToArray());
- //Clean up
- msEncrypt.Close();
- //Return encrypted string
- return encryptedString;
- }
- catch (Exception ex)
- {
- throw new AesCryptationException("Error in encrypting - " + ex.Message);
- }
- }
- public string DecryptData(string encryptedString)
- {
- try
- {
- //Convert the encrypted string to a byte array
- //byte[] encryptedBytes = System.Convert.FromBase64String(encryptedString);
- byte[] encryptedBytes = CryptationUtility.FromUrlSafeBase64(encryptedString);
- //Convert the byte array into a memory stream for decryption
- MemoryStream msDecrypt = new MemoryStream(encryptedBytes);
- ////Create a new instance of the CryptoStream class
- CryptoStream csDecrypt = new CryptoStream(msDecrypt, _rijndaelObj.CreateDecryptor(), CryptoStreamMode.Read);
- //Decrypt the stream
- StreamReader srDecrypt = new StreamReader(csDecrypt);
- //Convert the decrypted stream into a string
- string decryptedString = srDecrypt.ReadToEnd();
- //Clean up
- srDecrypt.Close();
- csDecrypt.Close();
- msDecrypt.Close();
- //return decrypted string
- return decryptedString;
- }
- catch (Exception ex)
- {
- throw new AesCryptationException("Error in decrypting - " + ex.Message);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment