예제 #1
0
파일: MD5.java 프로젝트: dalinhuang/zctable
  /*
   md5Update��MD5��������̣�inbuf��Ҫ�任���ֽڴ���inputlen�dz��ȣ����
   ������getMD5ofStr���ã�����֮ǰ��Ҫ����md5init����˰�����Ƴ�private��
  */
  private void md5Update(byte[] inbuf, int inputLen) {

    int i, index, partLen;
    byte[] block = new byte[64];
    index = (int) (count[0] >>> 3) & 0x3F;
    // /* Update number of bits */
    if ((count[0] += (inputLen << 3)) < (inputLen << 3)) count[1]++;
    count[1] += (inputLen >>> 29);

    partLen = 64 - index;

    // Transform as many times as possible.
    if (inputLen >= partLen) {
      md5Memcpy(buffer, inbuf, index, 0, partLen);
      md5Transform(buffer);

      for (i = partLen; i + 63 < inputLen; i += 64) {

        md5Memcpy(block, inbuf, 0, i, 64);
        md5Transform(block);
      }
      index = 0;
    } else i = 0;

    /// * Buffer remaining input */
    md5Memcpy(buffer, inbuf, index, i, inputLen - i);
  }