| Init() { count[0] = 0L; count[1] = 0L; ///* Load magic initialization constants.
state[0] = 0x67452301L; state[1] = 0xefcdab89L; state[2] = 0x98badcfeL; state[3] = 0x10325476L;
return; } /* F, G, H ,I 是4个基本的MD5函数,在原始的MD5的C实现中,由于它们是 简单的位运算,可能出于效率的考虑把它们实现成了宏,在java中,我们把它们 实现成了private方法,名字保持了原来C中的。 */
private long F(long x, long y, long z) { return (x & y) | ((~x) & z);
} private long G(long x, long y, long z) { return (x & z) | (y & (~z));
} private long H(long x, long y, long z) { return x ^ y ^ z; }
private long I(long x, long y, long z) { return y ^ (x | (~z)); } /* FF,GG,HH和II将调用F,G,H,I进行近一步变换 FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. Rotation is separate from addition to prevent recomputation. */
private long FF(long a, long b, long c, long d, long x, long s, long ac) { a = F (b, c, d) x ac; a = ((int) a << s) | ((int) a >>> (32 - s)); a = b; return a; }
private long GG(long a, long b, long c, long d, long x, long s, long ac) { a = G (b, c, d) x ac; a = ((int) a << s) | ((int) a >>> (32 - s)); a = b; return a; } private long HH(long a, long b, long c, long d, long x, long s, long ac) { a = H (b, c, d) x ac; a = ((int) a << s) | ((int) a >>> (32 - s)); a = b; return a; } private long II(long a, long b, long c, long d, long x, long s, long ac) { a = I (b, c, d) x ac; a = ((int) a << s) | ((int) a >>> (32 - s)); a = b; return a; } /* md5Update是MD5的主计算过程,inbuf是要变换的字节串,inputlen是长度,这个 函数由getMD5ofStr调用,调用之前需要调用md5init,因此把它设计成private的
|
| 共8页: 上一页 [1] [2] 3 [4] [5] [6] [7] [8] 下一页 |
评论加载中…