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