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

.net HashAlgorithm.TransformBlock写入的字节数何时与输入大小不同?,.net,hashalgorithm,.net,Hashalgorithm,MSDN关于TransformBlock: 返回值:写入的字节数 我假设输出缓冲区有足够的大小。通常,输入缓冲区用作输出缓冲区,两者的偏移量均为0,因此这不是问题 是否存在任何可能导致返回值不等于inputCount的条件?假设.net实现等同于,答案是:从不。它抛出异常,或者返回inputCount 这种奇怪的方法之所以存在,是因为它实现了ICryptoTransformICryptoTransform也被分组密码使用,在分组密码中,输入和输出大小确实会发生差异 在我看来,这是一个糟糕的类设计

MSDN关于TransformBlock:

返回值:写入的字节数

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


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

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

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

在我看来,这是一个糟糕的类设计。界面实现应该是明确的,并且应该给用户一个干净的界面,类似于
HashCore
HashFinal
,它们是
HashAlgorithm
的扩展点

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