동일한 md5 해시를 제공하는 동일한 바이트 크기 길이를 가진 두 개의 파일이 있는 경우의 비율은 얼마입니까?

동일한 md5 해시를 제공하는 동일한 바이트 크기 길이를 가진 두 개의 파일이 있는 경우의 비율은 얼마입니까?

저는 많은 파일을 저장할 앱을 개발 중입니다. 이미지의 경우 크기를 조정하고 필요한 다양한 썸네일을 저장하므로 사용자가 이미지를 업로드하면 8개의 파일이 더 많이 저장됩니다. ).

파일 중복을 방지하고 정적 호스팅 서버의 공간을 절약하기 위해 내 앱에서는 파일 이름을 "MD5.BYTE_SIZE"(예: 054d995efa7e9c91569d205d24a2b486.188154)로 저장합니다.

나는 이미 다른 클라이언트에서 이 파일 구성표를 아무 문제 없이 사용했지만, 특히 이 프로젝트에 대해 사용자가 동일한 MD5 및 동일한 크기 길이의 파일을 보낼 가능성이 있는지 알아야 합니다.

그렇다면 파일 이름을 저장하는 가장 좋은 방법은 무엇입니까? 두 개의 서로 다른 해시(예: MD5.SHA-256.BYTE_SIZE)를 사용합니까?

답변1

실용적인 목적을 위해 사용자가 MD5에서 가능한 동일한 해시를 가진 두 개의 파일을 적극적으로 생성하려고 시도하지 않는 한 0입니다.

대신 SHA-256을 사용하는 경우 사용자가 동일한 크기의 두 파일을 생성하려고 시도하더라도 "0"(실용적 목적)입니다.

두 개의 다른 파일이 동일한 해시를 생성할 정확한 확률은 약 1/2^128입니다. 생일 역설로 인해 두 파일이 동일한 해시를 가질 확률이 50%가 될 때까지 약 2^64개의 파일이 필요합니다. 실제로는 걱정하지 마십시오. SHA256의 경우 숫자는 각각 1/2^256 및 2^128입니다. 이 숫자는 "일어나지 않을 것"이라고도 알려져 있습니다.

답변2

이론적으로는 가능하지만 실제로는 두 개의 서로 다른 파일이 동일한 MD5 체크섬을 가질 확률은 거의 없습니다.

즉, 프로그램에 관한 한 이 이벤트를 본질적으로 불가능한 것으로 처리할 수 있을 만큼 작습니다.

관련 정보