Как получить md5sum файла в Java? - PullRequest
0 голосов
/ 15 ноября 2010

У меня есть файл, который мне нужно перезагружать в моем приложении каждый раз, когда он изменяется.

Я проверяю его lastModified и также хотел бы проверить его md5sum перед обработкой.1004 * Я использую Spring Framework, если там есть что-то полезное.

Какой лучший способ проверить это?Какие-нибудь примеры / библиотеки, которые я должен проверить?

Спасибо.

Ответы [ 5 ]

2 голосов
/ 15 ноября 2010

объяснение и фрагмент кода в этой ссылке могут помочь вам

только для записи, есть общая проблема в большинстве фрагментов, использующих bigInteger, класс bigInteger удаляет лишние нули в начале строки, поэтому вы можете добавить такую ​​проверку

    String res =new BigInteger(1,m.digest()).toString(16);
    if (res.length() == 31)
          res = "0" + res;
1 голос
/ 15 ноября 2010
    InputStream in = new FileInputStream(filename);

    MessageDigest md5 = MessageDigest.getInstance("MD5");
    byte[] buffer = new byte[1024];

    while (true)
    {
        int c = in.read(buffer);

        if (c > 0)
            md5.update(buffer, 0, c);
        else if (c < 0)
            break;
    }

    in.close();

    byte[] result = md5.digest();
0 голосов
/ 15 ноября 2010

Используйте класс MessageDigest , вы можете найти хороший пример здесь .

0 голосов
/ 15 ноября 2010

Вы можете сделать это с помощью встроенных функций Java:

MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(...your data here...);
byte[] hash = digest.digest();

или попробовать другую реализацию здесь , безусловно, быстрее (в зависимости от названия:)

РЕДАКТИРОВАТЬ:

кажется, что они предоставляют файл md5sum, именно то, что вы хотите!

Вы хотите дополнительные удобные методы для хэширования файла ...

String hash = MD5.asHex(MD5.getHash(new File(filename)));
0 голосов
/ 15 ноября 2010

Вы должны прочитать весь файл и передать его в экземпляр MessageDigest.

...