我正在通过FTP将数千个图像从一个系统发送到另一个系统。最初,我将转储所有图像,但是稍后,我只想发送那些已更改的图像。
我还没有找到任何具体的解决方案来根据Windows中更新的时间戳找出更改的图像。因此,我决定采用以下方法:
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);
}
}
我想知道为什么校验和相同?还有另一种方法来识别更新的图像吗?