Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
14 Авг 2024
2 мин
536

Получение контрольной суммы MD5 файла в Java

Часто разработчикам приходится сталкиваться с задачей получения контрольной суммы (checksum) файла. Это может быть необходимо для проверки целостности

Часто разработчикам приходится сталкиваться с задачей получения контрольной суммы (checksum) файла. Это может быть необходимо для проверки целостности файла, для сравнения двух файлов, для генерации уникального идентификатора файла и многих других целей. MD5 (Message-Digest Algorithm 5) — это широко используемый алгоритм, который генерирует 128-битный (16-байтный) хеш-значение. Это обычно выражается как 32-значное шестнадцатеричное число.

Вот пример кода, который позволяет получить MD5 контрольную сумму файла в Java:

import java.io.*;
import java.security.*;

public class ChecksumMD5 {
    public static void main(String[] args) throws Exception {
        MessageDigest md = MessageDigest.getInstance("MD5");
        FileInputStream fis = new FileInputStream("myfile.txt");

        byte[] dataBytes = new byte[1024];

        int nread = 0;
        while ((nread = fis.read(dataBytes)) != -1) {
            md.update(dataBytes, 0, nread);
        };
        byte[] mdbytes = md.digest();

        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < mdbytes.length; i++) {
            sb.append(Integer.toString((mdbytes[i] & 0xff) + 0x100, 16).substring(1));
        }

        System.out.println("Digest(in hex format):: " + sb.toString());
    }
}

В этом примере мы создаем экземпляр MessageDigest, используя статический метод getInstance() и передавая ему строку «MD5», указывающую, что мы хотим использовать алгоритм MD5. Затем мы открываем файл ‘myfile.txt’ на чтение и читаем его по блокам по 1024 байта. Каждый прочитанный блок добавляется в MessageDigest с помощью метода update().

После того как все блоки файла были прочитаны и добавлены в MessageDigest, мы вызываем метод digest(), который возвращает массив байтов, представляющих хеш-значение. Затем мы конвертируем этот массив байтов в строку в шестнадцатеричном формате.

Полученная строка и есть контрольная сумма MD5 файла.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий