基于J2ME的MD5算法类
count[1] += i >>> 29; int l = 64 - k; int j; if(i >= l) { md5Memcpy(buffer, abyte0, k, 0, l); md5Transform(buffer); for(j = l; j + 63 < i; j += 64) { md5Memcpy(abyte1, abyte0, 0, j, 64); md5Transform(abyte1); } k = 0; } else { j = 0; } md5Memcpy(buffer, abyte0, k, j, i - j); } private void md5Final() {//最终处理,将得到的128位(16字节)MD5码存放在digest数组中 byte abyte0[] = new byte[8]; Encode(abyte0, count, 8); int i = (int)(count[0] >>> 3) & 0x3f; int j = i >= 56 ? 120 - i : 56 - i; md5Update(PADDING, j); md5Update(abyte0, 8); Encode(digest, state, 16); } private void md5Memcpy(byte abyte0[], byte abyte1[], int i, int j, int k) { for(int l = 0; l < k; l++) abyte0[i + l] = abyte1[j + l]; } private void md5Transform(byte abyte0[]) { long l = state[0]; long l1 = state[1]; long l2 = state[2]; long l3 = state[3]; long al[] = new long[16]; Decode(al, abyte0, 64); l = FF(l, l1, l2, l3, al[0], 7L, 0xd76aa478L); l3 = FF(l3, l, l1, l2, al[1], 12L, 0xe8c7b756L); l2 = FF(l2, l3, l, l1, al[2], 17L, 0x242070dbL);本新闻共 6页,当前在第 3页 1 2 3 4 5 6 | |