유틸리티 소개

클라우드 파일 동기화가 빠른 이유 해시 기반 변경 감지의 비밀

드롭박스나 구글 드라이브가 수천 개의 파일 중에서 변경된 파일만 빠르게 동기화하는 비결이 뭘까요? 바로 해시 기반 변경 감지입니다.

전체 비교 vs 해시 비교

파일이 변경됐는지 확인하려면 전체 내용을 바이트 단위로 비교해야 할 것 같지만, 그렇게 하면 너무 느립니다. 대신 각 파일의 해시값을 저장해두고, 다음에 해시만 비교하면 되죠.

청크 해싱 기법

대용량 파일은 작은 청크로 나눠서 각각 해시를 계산합니다. 파일 일부만 수정되면 해당 청크의 해시만 바뀌므로, 변경된 부분만 업로드하면 됩니다. 해시 생성기에서 작은 텍스트의 해시가 얼마나 빨리 계산되는지 보면 이 원리를 이해할 수 있어요.

rsync 알고리즘

리눅스의 rsync도 같은 원리입니다. 롤링 해시로 파일 블록을 비교해서 다른 부분만 전송합니다.

개발 환경에서의 해시 활용

개발자라면 해시 생성기를 다양한 상황에서 활용할 수 있습니다. API 테스트 시 요청 서명을 검증하거나, 캐시 키를 생성하거나, 파일 업로드 전 중복 체크를 할 때 유용합니다. 특히 디버깅할 때 "내가 계산한 해시가 맞는지" 빠르게 확인하는 용도로 좋습니다. 코드에서 계산한 값과 온라인 도구의 결과가 다르면 인코딩이나 입력 처리에 문제가 있다는 뜻이니까요.

해시 결과 비교 방법

두 해시값을 비교할 때는 대소문자를 통일해야 합니다. 일부 도구는 대문자로, 일부는 소문자로 출력합니다. 프로그래밍에서는 대소문자 무시 비교를 하거나, 양쪽 다 소문자로 변환 후 비교하는 게 안전합니다. 또한 해시 비교는 항상 상수 시간 비교 함수를 사용해야 타이밍 공격을 방지할 수 있습니다.