package com.person.util;
import java.lang.reflect.Array;
public class MD5 {
/*
下面这些
S11-S44
实际上是
\uFFFD
\uFFFD4*4
的矩阵,在原始的
C
实现中是
\uFFFD#define
现的,
这里把它们实现成为
static final
是表示了只读,切能在同一个进程空间内的多
\uFFFD
Instance
共
\uFFFD*/
static final int S11 = 7;
static final int S12 = 12;
static final int S13 = 17;
static final int S14 = 22;
static final int S21 = 5;
static final int S22 = 9;
static final int S23 = 14;
static final int S24 = 20;
static final int S31 = 4;
static final int S32 = 11;
static final int S33 = 16;
static final int S34 = 23;
static final int S41 = 6;
static final int S42 = 10;
static final int S43 = 15;
static final int S44 = 21;
static final byte[] PADDING = {-128, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
/*
面的三个成员是
MD5
计算过程中用到的
3
个核心数据,在原始的
C
实现
\uFFFD
定义到
MD5_CTX
结构
\uFFFD
*/
private long[] state = new long[4];
// state (ABCD)
private long[] count = new long[2];
// number of bits, modulo 2^64 (lsb first)
private byte[] buffer = new byte[64]; // input buffer
/* digestHexStr MD5
的唯
\uFFFD \uFFFD
个公共成员,是最新一次计算结果的
\uFFFD 16
制
ASCII
表示
.
*/