2012-04-02 45 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的擴展點。

相關問題