Вычислять хеш, не имея весь буфер в памяти сразу - PullRequest
5 голосов
/ 26 августа 2009

Я выполняю операцию, при которой получаю несколько байтов от компонента, выполняю некоторую обработку и затем отправляю его следующему компоненту. Мне нужно иметь возможность вычислять хэш всех данных, которые я видел в любой момент времени - и из-за размера данных; Я не могу держать все это в локальном буфере.

Как бы вы рассчитали (MD5) хеш при этих обстоятельствах?

Я думаю, что смогу удержать промежуточный результат хэша и добавить больше данных по мере продвижения. Но поддерживает ли это какой-либо из встроенных классов инфраструктуры?

Ответы [ 2 ]

7 голосов
/ 26 августа 2009

Вы просто хотите использовать TransformBlock и TransformFinalBlock членов класса, которые позволяют вам вычислять хеш в кусках.

MSDN имеет хороший пример того, как это сделать.

0 голосов
/ 26 августа 2009

Немного удивительно, что это не входит в коробку.

Если вы создаете MD5CryptoServiceProvider в переменной-члене и неоднократно вызываете ComputeHash (), разве он не работает как дополнение?

...