파일에 지문을 써야합니다. 2013 년에 Java로 추천되는 것은 무엇입니까? 또한 파일 크기를 비교해야합니까, 아니면 불필요한 검사입니까? 답변이 많이, 감사 :파일을 비교하는 Java 및 해시 알고리즘
위양성의 확률은 0
편집에 매우 근접해야한다. 현재 백업 소프트웨어의 표준은 무엇입니까? SHA-256? 더 높은? 나는 md5가 적합하지 않다고 생각하니?
파일에 지문을 써야합니다. 2013 년에 Java로 추천되는 것은 무엇입니까? 또한 파일 크기를 비교해야합니까, 아니면 불필요한 검사입니까? 답변이 많이, 감사 :파일을 비교하는 Java 및 해시 알고리즘
위양성의 확률은 0
편집에 매우 근접해야한다. 현재 백업 소프트웨어의 표준은 무엇입니까? SHA-256? 더 높은? 나는 md5가 적합하지 않다고 생각하니?
위양성 확률이 0이 아닌 일 경우 "번개가 칠 확률보다 낮습니다"와 반대로 해시 알고리즘을 전혀 사용할 수 없습니다. 바이트 단위로 파일을 비교해야합니다.
는 타사 라이브러리를 사용할 수 있다면, 당신은 두 개의 파일을 비교하는 Guava를 사용할 수있는, 가치가 무엇인지에 대한바이트 단위 원 라이너
Files.asByteSource(file1).contentEquals(Files.asByteSource(file2));
와 개폐을 담당 파일뿐만 아니라 비교의 세부 사항. 당신이 번개에 의해 쳐지고보다 가능성이 잘못된 반응을 받아 들일 경우
, 당신은 할 수
HashCode
를 반환 한 다음 해시와 동일한 지 어떤지가 테스트 할 수 있습니다
Files.hash(file, Hashing.sha1()); // or md5(), or sha256(), or...
다른 파일의. (그 버전은 MessageDigest
의 성가신을 다루고, 파일을 적절하게 열고 닫는 것 등을 다룹니다.)
Java에서 파일의 md5 체크섬을받는 방법을 묻는 중입니까? 그렇다면 허용 된 대답 here과 here을 읽으십시오. 기본적으로,이 작업을 수행 :
import java.security.DigestInputStream;
...
...
MessageDigest md_1 = MessageDigest.getInstance("MD5");
MessageDigest md_2 = MessageDigest.getInstance("MD5");
InputStream is_1 = new FileInputStream("file1.txt");
InputStream is_2 = new FileInputStream("file2.txt");
try {
is_1 = new DigestInputStream(is_1, md_1);
is_2 = new DigestInputStream(is_2, md_2);
}
finally {
is_1.close();
is_2.close();
}
byte[] digest_1 = md_1.digest();
byte[] digest_2 = md_2.digest();
// compare digest_1 and digest_2
는 또한 파일 크기를 비교할 경우, 또는이는 불필요한 검사입니까?
필요하지 않습니다.
보통 128 비트 또는 256 비트 해시가 정상적으로 사용하기에 좋습니다. 파일 크기를 비교하여 파일을 다른 버킷에 넣은 다음 동일한 크기의 파일이 두 개 이상인 경우 해시 만 수행 할 수도 있습니다. – nhahtdh
타사 라이브러리가 허용됩니까? Guava는 최소한 순수 Java에서해야 할 일보다 훨씬 쉽게이 기능을 제공합니다. –
MD5가 완벽하게 적합합니다. MD5는 더 이상 ** 보안 ** 해시 알고리즘으로 간주 될 수 없습니다. 중요하다면 상황을 판단해야합니다. (해커가 소프트웨어를 속여 두 파일이 같은 것으로 생각할 가능성이 있습니까?). – Jesper