public string Decrypt(string toBeDecrypted, DecryptedResponse decryptedResponse)
        {
            byte[] decryptedBytes     = null;
            var    bytesToBeDecrypted = Convert.FromBase64String(toBeDecrypted);
            var    saltBytes          = Encoding.UTF8.GetBytes(decryptedResponse.Salt);
            var    passwordBytes      = Encoding.UTF8.GetBytes(decryptedResponse.Password);

            using (MemoryStream ms = new MemoryStream())
            {
                using (var AES = new RijndaelManaged())
                {
                    AES.KeySize   = 256;
                    AES.BlockSize = 128;
                    var key = new Rfc2898DeriveBytes(passwordBytes, saltBytes, 1000);
                    AES.Key  = key.GetBytes(AES.KeySize / 8);
                    AES.IV   = key.GetBytes(AES.BlockSize / 8);
                    AES.Mode = CipherMode.CBC;
                    using (var cs = new CryptoStream(ms, AES.CreateDecryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(bytesToBeDecrypted, 0, bytesToBeDecrypted.Length);
                        cs.Close();
                    }

                    decryptedBytes = ms.ToArray();
                }
            }

            return(Encoding.UTF8.GetString(decryptedBytes));
        }
        public void StoreDecryption(string documentId, DecryptedResponse decryptedResponse)
        {
            if (decryptedResponse == null)
            {
                throw new ArgumentNullException(nameof(decryptedResponse));
            }

            var fullPath = GetFullPath(documentId);

            if (File.Exists(fullPath))
            {
                File.Delete(fullPath);
            }

            File.WriteAllText(fullPath, JsonConvert.SerializeObject(decryptedResponse));
        }