public static SymmetricAlgorithm DecryptKeyClass(byte[] keyData, Gost3410AsymmetricAlgorithmBase privateKey)
        {
            if (keyData == null)
            {
                throw ExceptionUtility.ArgumentNull("keyData");
            }

            if (privateKey == null)
            {
                throw ExceptionUtility.ArgumentNull("privateKey");
            }

            var deformatter = new GostKeyExchangeDeformatter(privateKey);
            var decryptionKey = deformatter.DecryptKeyExchangeAlgorithm(keyData);

            return decryptionKey;
        }
        private static Stream ReceiveEncryptedDataStream(AsymmetricAlgorithm privateKey, Stream encryptedDataStream, byte[] iv, byte[] sessionKey)
        {
            var decryptedDataStream = new MemoryStream();

            var deformatter = new GostKeyExchangeDeformatter(privateKey);

            // Получатель принимает от отправителя зашифрованный сессионный ключ и дешифрует его
            using (var receiverSessionKey = deformatter.DecryptKeyExchangeAlgorithm(sessionKey))
            {
                // Получатель принимает от отправителя вектор инициализации
                receiverSessionKey.IV = iv;

                // Получатель дешифрует данные с использованием сессионного ключа
                using (var decryptor = receiverSessionKey.CreateDecryptor())
                {
                    var cryptoStream = new CryptoStream(encryptedDataStream, decryptor, CryptoStreamMode.Read);
                    cryptoStream.CopyTo(decryptedDataStream);
                }
            }

            decryptedDataStream.Position = 0;

            return decryptedDataStream;
        }