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 这是糟糕的类设计。接口实现应该是显式的,并且应该给用户一个干净的接口,类似于HashCoreand HashFinal,它们是 的扩展点HashAlgorithm。