protected override byte[] HashFinal() { int bufferOffset = this.bufferPosition; byte[] buffer = this.internalDataBuffer; buffer[bufferOffset] = 1; bufferOffset += 1; if ((BLOCKSIZE - 8) <= bufferOffset) { Array.Clear(buffer, bufferOffset, BLOCKSIZE - bufferOffset); this.ProcessBlock(); bufferOffset = 0; } Array.Clear(buffer, bufferOffset, BLOCKSIZE - bufferOffset - 8); TigerHash.LongToBytes(((ulong)this.totalLength) << 3, buffer, BLOCKSIZE - 8); this.ProcessBlock(); byte[] retval = new byte[24]; TigerHash.LongToBytes(this.a, retval, 0); TigerHash.LongToBytes(this.b, retval, 8); TigerHash.LongToBytes(this.c, retval, 16); return(retval); }