MSDN关于 TransformBlock的状态:
public int TransformBlock( byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset )
返回值:写入的字节数。
我假设输出缓冲区足够大。通常,输入缓冲区用作输出缓冲区,两者都偏移 0,因此这不是问题。
是否有任何情况可能导致返回值不等于 inputCount?
MSDN关于 TransformBlock的状态:
public int TransformBlock( byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset )
返回值:写入的字节数。
我假设输出缓冲区足够大。通常,输入缓冲区用作输出缓冲区,两者都偏移 0,因此这不是问题。
是否有任何情况可能导致返回值不等于 inputCount?
假设 .net 实现等同于mono 实现,答案是:从不。它抛出一个异常,或者它返回inputCount
。
这种奇怪的方法之所以存在,是因为它实现了ICryptoTransform
. ICryptoTransform
分组密码也使用,其中输入和输出大小之间确实可能发生差异。
IMO 这是糟糕的类设计。接口实现应该是显式的,并且应该给用户一个干净的接口,类似于HashCore
and HashFinal
,它们是 的扩展点HashAlgorithm
。