2012-04-02 49 views
0

的MSDN states约TransformBlock:何时由HashAlgorithm.TransformBlock写入的字节数与输入大小不同?

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

返回值:写入的字节数。

我假设输出缓冲区的大小足够大。通常情况下,输入缓冲区被用作输出缓冲区,都偏移0,所以这不是问题。

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

回答

2

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

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

IMO这是坏的类设计。接口的实现应该是明确的,并且应该给用户一个干净的接口,类似于HashCoreHashFinal,它们是HashAlgorithm的扩展点。

相关问题