Qual é a porcentagem de ter dois arquivos com o mesmo tamanho de bytes fornecendo o mesmo hash md5?

Qual é a porcentagem de ter dois arquivos com o mesmo tamanho de bytes fornecendo o mesmo hash md5?

Estou desenvolvendo um aplicativo que irá armazenar muitos arquivos, e no caso de imagens, ele irá redimensioná-los e salvar as diferentes miniaturas que precisamos, então quando um usuário fizer upload de uma imagem, ele salvará mais 8 arquivos (isso é necessário ).

Para evitar arquivos duplicados e economizar espaço no meu servidor de hospedagem estática, meu aplicativo está salvando o nome do arquivo como "MD5.BYTE_SIZE" (ex: 054d995efa7e9c91569d205d24a2b486.188154)

Já utilizei esse esquema de arquivos em outros clientes sem problemas, mas preciso saber, especificamente para este projeto, se existe a possibilidade do usuário enviar um arquivo com o mesmo MD5, e mesmo tamanho de comprimento.

Em caso afirmativo, qual é a melhor maneira de salvar meus nomes de arquivos? Com dois hashes diferentes (como MD5.SHA-256.BYTE_SIZE)?

Responder1

Para fins práticos, zero, a menos que o usuário tente ativamente criar dois arquivos que tenham o mesmo hash, o que é possível com MD5.

Se você usar SHA-256, "zero" (para fins práticos), mesmo que o usuário tente ativamente criar dois arquivos com o mesmo tamanho.

A probabilidade exata é algo em torno de 1/2 ^ 128 de dois arquivos diferentes gerarem o mesmo hash. Devido ao paradoxo do aniversário, você precisaria de cerca de 2 ^ 64 arquivos até que houvesse 50% de chance de que dois tivessem o mesmo hash. Não se preocupe com isso na prática. Para SHA256, os números são 1/2 ^ 256 e 2 ^ 128, respectivamente. Esses números também são conhecidos como “não vão acontecer”.

Responder2

Teoricamente é possível, mas na realidade a chance de dois arquivos diferentes terem a mesma soma de verificação MD5 é extremamente pequena.

Em outras palavras, tão pequeno que você pode essencialmente tratar esse evento como impossível no que diz respeito ao seu programa.

informação relacionada