Когда число байтов, записанных HashAlgorithm.TransformBlock, отличается от размера ввода? - PullRequest
0 голосов
/ 02 апреля 2012

MSDN сообщает о TransformBlock:

public int TransformBlock(
  byte[] inputBuffer,
  int inputOffset,
  int inputCount,
  byte[] outputBuffer,
  int outputOffset
)

Возвращаемое значение: количество записанных байтов.

Я предполагаю, чтовыходной буфер имеет достаточный размер.Как правило, входной буфер используется как выходной буфер, оба смещения 0, так что это не проблема.

Существуют ли какие-либо условия, которые могут привести к тому, что возвращаемое значение будет не равно inputCount?

1 Ответ

2 голосов
/ 23 апреля 2012

Если предположить, что реализация .net эквивалентна реализации mono , ответ: никогда.Выдает исключение или возвращает inputCount.

Этот странный метод существует, потому что он реализует ICryptoTransform.ICryptoTransform также используется блочными шифрами, где разница между входным и выходным размером действительно может быть.

IMO, это плохой дизайн класса.Реализация интерфейса должна была быть явной, и пользователю должен был быть предоставлен чистый интерфейс, подобный HashCore и HashFinal, которые являются точками расширения HashAlgorithm.

...