.net HashAlgorithm.TransformBlock写入的字节数何时与输入大小不同?
MSDN关于TransformBlock: 返回值:写入的字节数 我假设输出缓冲区有足够的大小。通常,输入缓冲区用作输出缓冲区,两者的偏移量均为0,因此这不是问题.net HashAlgorithm.TransformBlock写入的字节数何时与输入大小不同?,.net,hashalgorithm,.net,Hashalgorithm,MSDN关于TransformBlock: 返回值:写入的字节数 我假设输出缓冲区有足够的大小。通常,输入缓冲区用作输出缓冲区,两者的偏移量均为0,因此这不是问题 是否存在任何可能导致返回值不等于inputCount的条件?假设.net实现等同于,答案是:从不。它抛出异常,或者返回inputCount 这种奇怪的方法之所以存在,是因为它实现了ICryptoTransformICryptoTransform也被分组密码使用,在分组密码中,输入和输出大小确实会发生差异 在我看来,这是一个糟糕的类设计
是否存在任何可能导致返回值不等于inputCount的条件?假设.net实现等同于,答案是:从不。它抛出异常,或者返回
inputCount
这种奇怪的方法之所以存在,是因为它实现了ICryptoTransform
ICryptoTransform
也被分组密码使用,在分组密码中,输入和输出大小确实会发生差异
在我看来,这是一个糟糕的类设计。界面实现应该是明确的,并且应该给用户一个干净的界面,类似于HashCore
和HashFinal
,它们是HashAlgorithm
的扩展点
public int TransformBlock(
byte[] inputBuffer,
int inputOffset,
int inputCount,
byte[] outputBuffer,
int outputOffset
)