using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization.Formatters;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Security.Cryptography;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
private String decryptedText = "";
private String encryptedText = "";
public Encryptor setDecryptedText(String text)
public Encryptor setEncryptedText(String text)
public Encryptor setKey(String text)
Byte[] getHash(Byte[] hash)
Byte[] newHash = new Byte[32];
for (int i = 0; i < 32; i++)
Byte[] getIV(Byte[] hash)
Byte[] newHash = new Byte[16];
for (int i = 32; i < 48; i++)
String EncryptAesManaged()
SHA512 shaM = new SHA512Managed();
Byte[] data = Encoding.UTF8.GetBytes(key);
Byte[] hash = shaM.ComputeHash(data);
return Encrypt(decryptedText, getHash(hash), getIV(hash));
Console.WriteLine(ex.Message);
String DecryptAesManaged()
SHA512 shaM = new SHA512Managed();
var data = Encoding.UTF8.GetBytes(key);
Byte[] hash = shaM.ComputeHash(data);
return Decrypt(Convert.FromBase64String(encryptedText), getHash(hash), getIV(hash));
Console.WriteLine(ex.Message);
static String Encrypt(string plainText, byte[] Key, byte[] IV)
using (var aes = new RijndaelManaged())
aes.Mode = CipherMode.CBC;
ICryptoTransform encryptor = aes.CreateEncryptor(Key, IV);
using (var ms = new MemoryStream())
using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write, true))
using (var sw = new StreamWriter(cs))
encrypted = Convert.ToBase64String(ms.GetBuffer(), 0, checked((int)ms.Length));
static string Decrypt(byte[] cipherText, byte[] Key, byte[] IV)
using (RijndaelManaged aes = new RijndaelManaged())
aes.Mode = CipherMode.CBC;
ICryptoTransform decryptor = aes.CreateDecryptor(Key, IV);
using (MemoryStream ms = new MemoryStream(cipherText))
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
using (StreamReader reader = new StreamReader(cs))
plaintext = reader.ReadToEnd();
Console.WriteLine(ex.Message);
public String getEncrypted()
return EncryptAesManaged();
public String getDecrypted()
return DecryptAesManaged();
public static void Test()
var encryptor = new Encryptor();
encryptor.setDecryptedText(plainText);
var encrypted = encryptor.getEncrypted();
Console.WriteLine(encrypted);
var deecryptor = new Encryptor();
deecryptor.setEncryptedText(encrypted);
var decrypted = deecryptor.getDecrypted();
Console.WriteLine(decrypted);
Assert.IsTrue(plainText == decrypted);
public static void Main()
Console.WriteLine("Environment version: " + Environment.Version);
Console.WriteLine("Failed with unhandled exception: ");