Я отправляю тысячи изображений из одной системы в другую по FTP.Сначала я дам все изображения, но позже я хочу отправить только те изображения, которые были изменены.
Я не нашел какого-либо конкретного решения для определения измененных изображений на основе обновленной метки времени вокна.Поэтому я решил следующий подход:
1.) Сгенерируйте контрольные суммы для всех файлов и сохраните их где-нибудь.Может быть, база данных или файловая система.
2.) Каждый раз, когда я отправляю файлы в другую систему, сравниваю контрольные суммы и отправляю только файлы с разными контрольными суммами.
Для проверки вышеизложенного япопытался сгенерировать контрольную сумму (SHA и MD5) для двух разных изображений, и контрольная сумма была одинаковой.
Ниже приведен пример кода:
package com.test;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.commons.codec.digest.DigestUtils;
public class TestHash {
public static void main(String[] args) throws IOException {
String checksumSHA256 = DigestUtils.sha256Hex(new FileInputStream("monkey_11.jpg"));
System.out.println("checksumSHA256 : " + checksumSHA256);
String checksumMD5 = DigestUtils.md5Hex(new FileInputStream("monkey_11.jpg"));
System.out.println("checksumMD5 : " + checksumMD5);
String checksumSHA256_1 = DigestUtils.sha256Hex(new FileInputStream("monkey.jpg"));
System.out.println("checksumSHA256 : " + checksumSHA256_1);
String checksumMD5_1 = DigestUtils.md5Hex(new FileInputStream("monkey.jpg"));
System.out.println("checksumMD5 : " + checksumMD5_1);
}
}
Мне интересно, почему контрольные суммыподобные?Есть ли другой способ идентифицировать обновленные изображения?