파일 용 해시 계산과 관련된 프로젝트를 진행 중입니다. 프로젝트는 파일 백업 서비스와 같습니다. 따라서 파일이 클라이언트에서 서버로 업로드되면 해당 파일이 이미 서버에서 사용 가능한지 확인해야합니다. 파일에 대해 CRC-32 해시를 생성 한 다음 서버에 해시를 전송하여 이미 사용 가능한지 확인합니다.대용량 파일 및 512KB 청크에 대한 가장 빠른 및 LightWeight 해시 알고리즘 [C, Linux, MAC, Windows]
파일이 서버에 없으면이 파일을 512KB 청크 [Dedupe 용]로 보내는데이 512KB 청크에 대해 해시를 계산해야합니다. 파일 크기는 때때로 몇 GB 정도일 수 있으며 여러 클라이언트가 서버에 연결합니다. 그래서 파일에 Fast와 LightWeight Hashing 알고리즘이 필요합니다. 어떤 아이디어 ..?
P.S : 이미 StackOverflow에서 몇 가지 해싱 알고리즘 질문을 발견했지만, 해답은 이러한 종류의 작업에 정확히 필요한 해싱 알고리즘을 비교하지 않았습니다. 나는 이것이 많은 사람들에게 정말로 유용 할 것이라고 확신한다.
파일에 대해 "해시 체인"을 미리 계산하려는 것처럼 들리므로 * 마지막 * 청크가 있고 마지막 해시가 추가 된 두 번째 - 마지막 청크가 해시되는 등의 효과가 있습니다. 첫 번째 청크와 두 번째 해시의 해시 만 배포하십시오. 미리 계산되기 때문에 해시에 걸리는 시간이 주요 관심사가 아닐 수도 있습니다. –
그 덩어리는 독립적이며 전체 파일에 덩어리를 결합해야합니다. 클라이언트에서 데이터를 다시 수신하는 동안. 덩어리를 계획하고 있습니다. 덩어리의 해시가 이미 존재하는 것처럼 중복 제거를 계획하고 있습니다. 청크를 클라이언트에서 서버로 보내지 않아도됩니다. –
스트림 프로세서에 잘 맞는 알고리즘을 사용하여 파일의 512K 덩어리를 처리하는 것처럼 보이는 것은 GPU의 작업입니다. CRC32는 너무 기본적인 것입니다. MD5를 살펴보십시오 (그러나 GPU를 사용하면 무차별적일 수 있습니다 ... 아이러니). – ActiveTrayPrntrTagDataStrDrvr