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)); }