public static string Encrypt(string data, byte[] key, byte[] salt, AesCryptographyLevel bits) { var clearBytes = Encoding.Unicode.GetBytes(data); var pdb = new Rfc2898DeriveBytes(key, salt, 5); switch (bits) { case AesCryptographyLevel.Aes128: return Convert.ToBase64String(Encrypt(clearBytes, pdb.GetBytes(16), pdb.GetBytes(16))); case AesCryptographyLevel.Aes192: return Convert.ToBase64String(Encrypt(clearBytes, pdb.GetBytes(24), pdb.GetBytes(16))); default: return Convert.ToBase64String(Encrypt(clearBytes, pdb.GetBytes(32), pdb.GetBytes(16))); } }
public static string Decrypt(string data, byte[] key, byte[] salt, AesCryptographyLevel bits) { var cipherBytes = Convert.FromBase64String(data); var pdb = new Rfc2898DeriveBytes(key, salt, 5); switch (bits) { case AesCryptographyLevel.Aes128: return(Encoding.Unicode.GetString(Decrypt(cipherBytes, pdb.GetBytes(16), pdb.GetBytes(16)))); case AesCryptographyLevel.Aes192: return(Encoding.Unicode.GetString(Decrypt(cipherBytes, pdb.GetBytes(24), pdb.GetBytes(16)))); default: return(Encoding.Unicode.GetString(Decrypt(cipherBytes, pdb.GetBytes(32), pdb.GetBytes(16)))); } }