何时HashAlgorithm.TransformBlock写入的字节数与输入大小不同?

时间:2012-04-02 12:27:24

标签: .net hashalgorithm

关于TransformBlock的MSDN states

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

返回值:写入的字节数。

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

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

1 个答案:

答案 0 :(得分:2)

假设.net实现等同于mono implementation,答案是:never。它会抛出异常,或者返回inputCount

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

IMO这是糟糕的课堂设计。接口实现应该是显式的,并且应该为用户提供一个干净的界面,类似于HashCoreHashFinal,它们是HashAlgorithm的扩展点。