public Memoable copy() { return new MD5Digest(this); }
public int doFinal( byte[] out, int outOff) { finish(); unpackWord(H1, out, outOff); unpackWord(H2, out, outOff + 4); unpackWord(H3, out, outOff + 8); unpackWord(H4, out, outOff + 12); reset(); return DIGEST_LENGTH; }
protected void processWord( byte[] in, int inOff) { X[xOff++] = (in[inOff] & 0xff) | ((in[inOff + 1] & 0xff) << 8) | ((in[inOff + 2] & 0xff) << 16) | ((in[inOff + 3] & 0xff) << 24); if (xOff == 16) { processBlock(); } }
a = rotateLeft(a + F(b, c, d) + X[ 0] + 0xd76aa478, S11) + b; d = rotateLeft(d + F(a, b, c) + X[ 1] + 0xe8c7b756, S12) + a; c = rotateLeft(c + F(d, a, b) + X[ 2] + 0x242070db, S13) + d; b = rotateLeft(b + F(c, d, a) + X[ 3] + 0xc1bdceee, S14) + c; a = rotateLeft(a + F(b, c, d) + X[ 4] + 0xf57c0faf, S11) + b; d = rotateLeft(d + F(a, b, c) + X[ 5] + 0x4787c62a, S12) + a; c = rotateLeft(c + F(d, a, b) + X[ 6] + 0xa8304613, S13) + d; b = rotateLeft(b + F(c, d, a) + X[ 7] + 0xfd469501, S14) + c; a = rotateLeft(a + F(b, c, d) + X[ 8] + 0x698098d8, S11) + b; d = rotateLeft(d + F(a, b, c) + X[ 9] + 0x8b44f7af, S12) + a; c = rotateLeft(c + F(d, a, b) + X[10] + 0xffff5bb1, S13) + d; b = rotateLeft(b + F(c, d, a) + X[11] + 0x895cd7be, S14) + c; a = rotateLeft(a + F(b, c, d) + X[12] + 0x6b901122, S11) + b; d = rotateLeft(d + F(a, b, c) + X[13] + 0xfd987193, S12) + a; c = rotateLeft(c + F(d, a, b) + X[14] + 0xa679438e, S13) + d; b = rotateLeft(b + F(c, d, a) + X[15] + 0x49b40821, S14) + c; a = rotateLeft(a + G(b, c, d) + X[ 1] + 0xf61e2562, S21) + b; d = rotateLeft(d + G(a, b, c) + X[ 6] + 0xc040b340, S22) + a; c = rotateLeft(c + G(d, a, b) + X[11] + 0x265e5a51, S23) + d; b = rotateLeft(b + G(c, d, a) + X[ 0] + 0xe9b6c7aa, S24) + c; a = rotateLeft(a + G(b, c, d) + X[ 5] + 0xd62f105d, S21) + b; d = rotateLeft(d + G(a, b, c) + X[10] + 0x02441453, S22) + a; c = rotateLeft(c + G(d, a, b) + X[15] + 0xd8a1e681, S23) + d; b = rotateLeft(b + G(c, d, a) + X[ 4] + 0xe7d3fbc8, S24) + c; a = rotateLeft(a + G(b, c, d) + X[ 9] + 0x21e1cde6, S21) + b; d = rotateLeft(d + G(a, b, c) + X[14] + 0xc33707d6, S22) + a; c = rotateLeft(c + G(d, a, b) + X[ 3] + 0xf4d50d87, S23) + d; b = rotateLeft(b + G(c, d, a) + X[ 8] + 0x455a14ed, S24) + c;
a = rotateLeft(a + F(b, c, d) + X[ 0] + 0xd76aa478, S11) + b; d = rotateLeft(d + F(a, b, c) + X[ 1] + 0xe8c7b756, S12) + a; c = rotateLeft(c + F(d, a, b) + X[ 2] + 0x242070db, S13) + d; b = rotateLeft(b + F(c, d, a) + X[ 3] + 0xc1bdceee, S14) + c; a = rotateLeft(a + F(b, c, d) + X[ 4] + 0xf57c0faf, S11) + b; d = rotateLeft(d + F(a, b, c) + X[ 5] + 0x4787c62a, S12) + a; c = rotateLeft(c + F(d, a, b) + X[ 6] + 0xa8304613, S13) + d; b = rotateLeft(b + F(c, d, a) + X[ 7] + 0xfd469501, S14) + c; a = rotateLeft(a + F(b, c, d) + X[ 8] + 0x698098d8, S11) + b; d = rotateLeft(d + F(a, b, c) + X[ 9] + 0x8b44f7af, S12) + a; c = rotateLeft(c + F(d, a, b) + X[10] + 0xffff5bb1, S13) + d; b = rotateLeft(b + F(c, d, a) + X[11] + 0x895cd7be, S14) + c; a = rotateLeft(a + F(b, c, d) + X[12] + 0x6b901122, S11) + b; d = rotateLeft(d + F(a, b, c) + X[13] + 0xfd987193, S12) + a; c = rotateLeft(c + F(d, a, b) + X[14] + 0xa679438e, S13) + d; b = rotateLeft(b + F(c, d, a) + X[15] + 0x49b40821, S14) + c; a = rotateLeft(a + G(b, c, d) + X[ 1] + 0xf61e2562, S21) + b; d = rotateLeft(d + G(a, b, c) + X[ 6] + 0xc040b340, S22) + a; c = rotateLeft(c + G(d, a, b) + X[11] + 0x265e5a51, S23) + d; b = rotateLeft(b + G(c, d, a) + X[ 0] + 0xe9b6c7aa, S24) + c; a = rotateLeft(a + G(b, c, d) + X[ 5] + 0xd62f105d, S21) + b; d = rotateLeft(d + G(a, b, c) + X[10] + 0x02441453, S22) + a; c = rotateLeft(c + G(d, a, b) + X[15] + 0xd8a1e681, S23) + d; b = rotateLeft(b + G(c, d, a) + X[ 4] + 0xe7d3fbc8, S24) + c; a = rotateLeft(a + G(b, c, d) + X[ 9] + 0x21e1cde6, S21) + b; d = rotateLeft(d + G(a, b, c) + X[14] + 0xc33707d6, S22) + a; c = rotateLeft(c + G(d, a, b) + X[ 3] + 0xf4d50d87, S23) + d; b = rotateLeft(b + G(c, d, a) + X[ 8] + 0x455a14ed, S24) + c;
public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier) { return new MD5Digest(); } });
public int doFinal( byte[] out, int outOff) { finish(); unpackWord(H1, out, outOff); unpackWord(H2, out, outOff + 4); unpackWord(H3, out, outOff + 8); unpackWord(H4, out, outOff + 12); reset(); return DIGEST_LENGTH; }
protected void processWord( byte[] in, int inOff) { X[xOff++] = (in[inOff] & 0xff) | ((in[inOff + 1] & 0xff) << 8) | ((in[inOff + 2] & 0xff) << 16) | ((in[inOff + 3] & 0xff) << 24); if (xOff == 16) { processBlock(); } }
public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier) { return new MD5Digest(); } });
protected void processLength( long bitLength) { if (xOff > 14) { processBlock(); } X[14] = (int)(bitLength & 0xffffffff); X[15] = (int)(bitLength >>> 32); }
public Digest() { super(new MD5Digest()); }
protected void processLength( long bitLength) { if (xOff > 14) { processBlock(); } X[14] = (int)(bitLength & 0xffffffff); X[15] = (int)(bitLength >>> 32); }
public static Digest createMD5() { return new MD5Digest(); }
public Digest() { super(new MD5Digest()); }
public HashMac() { super(new HMac(new MD5Digest())); } }
public HashMac() { super(new HMac(new MD5Digest())); } }
public MD5() { super(new HMac(new MD5Digest())); } }
public MD5() { super(new HMac(new MD5Digest())); } }
public Object clone() throws CloneNotSupportedException { Digest d = (Digest)super.clone(); d.digest = new MD5Digest((MD5Digest)digest); return d; } }
CombinedHash(CombinedHash t) { this.context = t.context; this.md5 = new MD5Digest(t.md5); this.sha1 = new SHA1Digest(t.sha1); }