Когда число байтов, записанных HashAlgorithm.TransformBlock, отличается от входного размера?
MSDN заявляет о TransformBlock:
public int TransformBlock( byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset )
Возвращаемое значение: количество записанных байтов.
Я предполагаю, что выходной буфер имеет достаточный размер. Как правило, входной буфер используется как выходной буфер, оба смещения 0, так что это не проблема.
Есть ли условие, которое может привести к тому, что возвращаемое значение не будет равным inputCount?
1 ответ
Предполагая, что реализация.net эквивалентна реализации mono, ответ: никогда. Выдает исключение или возвращает inputCount
,
Этот странный метод существует, потому что он реализует ICryptoTransform
, ICryptoTransform
также используется блочными шифрами, где разница между входным и выходным размером действительно может быть.
ИМО это плохой дизайн класса. Реализация интерфейса должна была быть явной, и пользователю должен был быть предоставлен чистый интерфейс, подобный HashCore
а также HashFinal
, которые являются точками расширения HashAlgorithm
,