다음과 같이 코드 코드를 복사합니다.
공개 클래스 MD5Check {
/**
* 기본 비밀번호 문자열 조합은 바이트를 16진수 문자로 변환하는 데 사용됩니다. Apache는 이 기본 조합을 사용하여 다운로드한 파일의 정확성을 확인합니다.
*/
protected char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a' , 'b', 'c', 'd', 'e', 'f' };
보호된 MessageDigest messagedigest = null;
{
노력하다 {
messagedigest = MessageDigest.getInstance("MD5");
} 잡기(NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
공개 문자열 getFileMD5String(파일 파일)이 IOException을 발생시킵니다.
입력스트림 fis;
fis = new FileInputStream(파일);
바이트[] 버퍼 = 새 바이트[1024];
int numRead = 0;
while ((numRead = fis.read(buffer)) > 0) {
messagedigest.update(buffer, 0, numRead);
}
fis.close();
return bufferToHex(messagedigest.digest());
}
공개 문자열 getFileMD5String(InputStream in)이 IOException을 발생시킵니다.
바이트[] 버퍼 = 새 바이트[1024];
int numRead = 0;
while ((numRead = in.read(buffer)) > 0) {
messagedigest.update(buffer, 0, numRead);
}
넣다();
return bufferToHex(messagedigest.digest());
}
개인 문자열 bufferToHex(바이트 바이트[]) {
return bufferToHex(bytes, 0, bytes.length);
}
private String bufferToHex(byte bytes[], int m, int n) {
StringBuffer stringbuffer = new StringBuffer(2 * n);
int k = m + n;
for (int l = m; l < k; l++) {
AppendHexPair(bytes[l], stringbuffer);
}
stringbuffer.toString()을 반환합니다.
}
private voidappendHexPair(byte bt, StringBuffer stringbuffer) {
char c0 = hexDigits[(bt & 0xf0) >> 4];//바이트의 상위 4비트의 디지털 변환을 가져옵니다.
// 논리적인 오른쪽 시프트이며, 부호 비트가 함께 오른쪽으로 시프트됩니다. 여기서는 두 기호 사이에 차이가 없습니다.
char c1 = hexDigits[bt & 0xf]; // 바이트의 하위 4비트의 디지털 변환을 가져옵니다.
stringbuffer.append(c0);
stringbuffer.append(c1);
}
}