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

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

                // Сравнение исходного HMAC с ожидаемым
                return(imitHashValue.SequenceEqual(expectedImitHashValue));
            }
        }
Пример #2
0
        private static Stream CreateHmacDataStream(Gost28147 sharedKey, Stream dataStream)
        {
            // Создание объекта для вычисления HMAC
            using (var imitHash = new Gost3411Hmac(sharedKey))
            {
                // Вычисление HMAC для потока данных
                var imitHashValue = imitHash.ComputeHash(dataStream);

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

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

                imitDataStream.Position = 0;

                return(imitDataStream);
            }
        }