0

MSDN关于 TransformBlock的状态:

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

返回值:写入的字节数。

我假设输出缓冲区足够大。通常,输入缓冲区用作输出缓冲区,两者都偏移 0,因此这不是问题。

是否有任何情况可能导致返回值不等于 inputCount?

4

1 回答 1

2

假设 .net 实现等同于mono 实现,答案是:从不。它抛出一个异常,或者它返回inputCount

这种奇怪的方法之所以存在,是因为它实现了ICryptoTransform. ICryptoTransform分组密码也使用,其中输入和输出大小之间确实可能发生差异。

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

于 2012-04-23T19:45:06.307 回答