示例#1
0
        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);
        }