2012-04-02 8 views
0

TransformBlock에 대한 MSDN states :HashAlgorithm.TransformBlock에서 쓴 바이트 수가 입력 크기와 다른 경우는 언제입니까?

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

반환 값 : 기록 된 바이트의 수입니다.

출력 버퍼가 충분한 크기라고 가정합니다. 일반적으로 입력 버퍼는 출력 버퍼로 사용되며 두 오프셋 값 모두 0이므로이 값은 문제가되지 않습니다.

반환 값이 inputCount와 같지 않을 수있는 조건이 있습니까?

답변

2

.net 구현이 mono implementation과 같다고 가정하면 대답은 never입니다. 예외가 발생하거나 inputCount을 반환합니다.

이 이상한 방법은 ICryptoTransform을 구현하기 때문에 존재합니다. ICryptoTransform은 블럭 암호에서도 사용되며, 입력 및 출력 크기의 차이가 실제로 발생할 수 있습니다.

IMO이 클래스 디자인은 좋지 않습니다. 인터페이스 구현은 명시 적이어야하며 사용자에게는 HashCoreHashFinal과 같은 깨끗한 인터페이스가 제공되어야하며 이는 확장 점 HashAlgorithm입니다.