Скопируйте код кода следующим образом:
общественный класс MD5Check {
/**
* Комбинация строк пароля по умолчанию используется для преобразования байтов в шестнадцатеричные символы. Apache использует эту комбинацию по умолчанию для проверки правильности загружаемых файлов.
*/
protected char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a' , 'б', 'в', 'д', 'е', 'е' };
защищенный MessageDigest messagedigest = null;
{
пытаться {
messagedigest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
е.printStackTrace();
}
}
public String getFileMD5String(Файл-файл) выдает IOException {
Входной поток фис;
фис = новый FileInputStream (файл);
буфер байт[] = новый байт[1024];
интервал numRead = 0;
while ((numRead = fis.read(buffer)) > 0) {
messagedigest.update(буфер, 0, numRead);
}
фис.закрыть();
вернуть буферToHex(messagedigest.digest());
}
public String getFileMD5String (InputStream in) выдает IOException {
буфер байт[] = новый байт[1024];
интервал numRead = 0;
while ((numRead = in.read(buffer)) > 0) {
messagedigest.update(буфер, 0, numRead);
}
в.закрыть();
вернуть буферToHex(messagedigest.digest());
}
частная строка bufferToHex (байт байты []) {
вернуть bufferToHex(байты, 0, байты.длина);
}
частная строка bufferToHex (байт байты [], int m, int n) {
StringBuffer stringbuffer = новый StringBuffer (2 * n);
интервал к = м + п;
for (int l = m; l < k; l++) {
appendHexPair(bytes[l], stringbuffer);
}
вернуть stringbuffer.toString();
}
Private void AppendHexPair (байт bt, StringBuffer stringbuffer) {
char c0 = hexDigits[(bt & 0xf0) >> 4];//Получаем цифровое преобразование старших 4 битов в байте
// Это логический сдвиг вправо, и биты знака сдвигаются вправо вместе. Никакой разницы между двумя символами здесь не обнаружено.
char c1 = hexDigits[bt & 0xf] // Получаем цифровое преобразование младших 4 битов в байте
stringbuffer.append(c0);
stringbuffer.append(c1);
}
}