while (_bufferPos < 32)
while (_bufferPos <= 32)
    private void finish()    {        /*         * this makes a copy of the current bit length. at the expense of an         * object creation of 32 bytes rather than providing a _stopCounting         * boolean which was the alternative I could think of.         */        byte[] bitLength = copyBitLength();                 _buffer[_bufferPos++] |= 0x80;        /*         * Final block contains          * [ ... data .... ][0][0][0][ length ]         *          * if [ length ] cannot fit.  Need to create a new block.         */        if (_bufferPos >= 32)        {            while (_bufferPos != 0)            {                update((byte)0);            }        }                while (_bufferPos < 32)        {            update((byte)0);        }                // copy the length information to the final 32 bytes of the        // 64 byte block....        System.arraycopy(bitLength, 0, _buffer, 32, bitLength.length);                processFilledBuffer(_buffer, 0);    }