code: public byte[] digest()
  	{
  		byte bits[];
  		int index, padlen;
  
  		int[] count_ints = { (int) (state.count << 3), (int) (state.count >> 29) };
  		bits = encode(count_ints, 8);
  
  		index = (int) (state.count & 0x3f);
  		padlen = (index < 56) ? (56 - index) : (120 - index);
  
  		update(PADDING, 0, padlen);
  		update(bits, 0, 8);
  
  		return encode(state.state, 16);
  	}
docs: Returns array of bytes (16 bytes) representing hash as of the current
  state of this object. Note: getting a hash does not invalidate the hash
  object, it only creates a copy of the real state which is finalized.
  
  @return Array of 16 bytes, the hash of all updated bytes