private static bool VerifyImitDataStream(Gost_28147_89_SymmetricAlgorithmBase sharedKey, Stream imitDataStream)
        {
            // Создание объекта для вычисления имитовставки
            using (var imitHash = new Gost_28147_89_ImitHashAlgorithm(sharedKey))
            {
                // Считывание имитовставки из потока данных
                var imitHashValue = new byte[imitHash.HashSize / 8];
                imitDataStream.Read(imitHashValue, 0, imitHashValue.Length);

                // Вычисление реального значения имитовставки для потока данных
                var expectedImitHashValue = imitHash.ComputeHash(imitDataStream);

                // Сравнение исходной имитовставки с ожидаемой
                return(imitHashValue.SequenceEqual(expectedImitHashValue));
            }
        }
        private static Stream CreateImitDataStream(Gost_28147_89_SymmetricAlgorithmBase sharedKey, Stream dataStream)
        {
            // Создание объекта для вычисления имитовставки
            using (var imitHash = new Gost_28147_89_ImitHashAlgorithm(sharedKey))
            {
                // Вычисление имитовставки для потока данных
                var imitHashValue = imitHash.ComputeHash(dataStream);

                // Запись имитовставки в начало выходного потока данных
                var imitDataStream = new MemoryStream();
                imitDataStream.Write(imitHashValue, 0, imitHashValue.Length);

                // Копирование исходного потока данных в выходной поток
                dataStream.Position = 0;
                dataStream.CopyTo(imitDataStream);

                imitDataStream.Position = 0;

                return(imitDataStream);
            }
        }