2011-12-05 3 views
1

현재 2 명의 클라이언트가 연결할 수있는 서버가 있습니다. 이 두 클라이언트는 모두 HDD에 텍스트 파일을 가지고 있는데,이 파일은 시작하자마자 프로그램에서 읽습니다. 이 텍스트 파일에는 두 클라이언트 (서버에서 유효성을 검사해야 함)에 정확히 동일한 데이터 (일반 텍스트)가 포함되어 있거나 서버가 클라이언트에 제공되지 않을 수 있습니다.자바 유효성 검사 파일

올바르게 수행하는 방법이 궁금합니다. 어떻게해야합니까? 해시 코드를 계산하거나 MD5/SHA1/SHA2를 이와 같이 사용 하시겠습니까? 먼저 파일을 읽고 생성 된 객체에 해시 코드를 계산하거나 파일에서 MD5를 직접 계산해야합니까?

감사

+2

아마도 [CRC32 확인] (http://stackoverflow.com/questions/7776069/confirming-file-content-against-hash)? 파일 내용의 크기는 얼마입니까? 작은 경우에는 바이트를 바이트로 비교할 수 있습니다. BTW - 이것은 어떤 응용 프로그램 기능이 최종 사용자에게 제공합니까? –

답변

0

이 정말로 확실한이 되려면 두 텍스트 파일의 내용을 서버로 전송하고 문자열로 비교해야합니다.

모든 실제적인 목적을 위해 해시 코드를 계산하고 서버에서 해당 값을 비교할 수 있습니다. 아파치 공유지에서 FileUtil 클래스를 살펴보십시오. 파일의 체크섬을 계산하는 데 사용할 수있는 checksumCRC32(File file) 메서드를 정의합니다. 체크섬이 두 파일에 대해 같으면 내용은 동일하다고 가정 할 수 있습니다. 그럼에도 불구하고 그것들이 다를 확률은 1/2^32입니다.

0

은 쉽게 아파치 공용 DigestUtils을 사용하여 파일의 해시를 계산할 수 있습니다. 그것은 MD5 또는 SHA1과 같은 해시를 계산하는 좋은 방법을 가지고 있습니다. 그런 다음 각 클라이언트의 파일 해시를 비교하면됩니다.

또한 정확한 해시가 파일이 동일하다는 것을 100 % 보장하지 않는다는 점을 알아야합니다. 해시가 동일하면 파일이 동일하지 않은 경우는 매우 드뭅니다. 그러나이 결정이 앱에서 중요한지 여부에 따라 해시가 동일 할 때 바이트별로 파일을 비교해야 정확한 데이터가 있는지 확인할 수 있습니다.