When the hashes are identical, does this mean that the file contents are 1:1 the same?
Todos os arquivos são uma coleção de bytes (valores 0-255). Se dois arquivos MD5 hashes corresponderem, ambas as coleções de bytes são extremamente prováveis exatamente iguais (mesma ordem, mesmos valores).
Há uma chance muito pequena de que dois arquivos possam gerar o mesmo MD5, que é um hash de 128 bits. A probabilidade é:
Probability of just two hashes accidentally colliding is 1/2128 which is 1 in 340 undecillion 282 decillion 366 nonillion 920 octillion 938 septillion 463 sextillion 463 quintillion 374 quadrillion 607 trillion 431 billion 768 million 211 thousand 456. (from an answer on StackOverflow.)
Os hashes devem funcionar em "apenas uma direção" - ou seja, você pega uma coleção de bytes e obtém um hash, mas não pode receber um hash e recuperar uma coleção de bytes.
A criptografia depende disso (é uma maneira pela qual duas coisas podem ser comparadas sem saber quais são essas coisas.)
Por volta do ano de 2005, os métodos foram descobertos para pegar um hash MD5 e criar dados que correspondam a esse hash para criar dois documentos que tinham o mesmo hash MD5 ( ataque de colisão ). Consulte @ Comentário de user2357112 abaixo. Isso significa que um invasor pode criar dois executáveis, por exemplo, que possuem o mesmo MD5, e se você estiver dependendo do MD5 para determinar em qual confiar, você será enganado.
Assim, o MD5 não deve ser usado para criptografia ou segurança. É ruim publicar um MD5 em um site de download para garantir a integridade do download, por exemplo. Dependendo de um hash MD5 que você não gerou para verificar se o conteúdo de arquivos ou dados é o que você deseja evitar.
Se você gerar o seu próprio, você sabe que não está sendo malicioso consigo mesmo (espero). Portanto, para o seu uso, tudo bem, mas se você quiser que outra pessoa possa reproduzi-lo e publicar publicamente o hash MD5, um hash melhor deve ser usado.
Observe que é possível que dois arquivos do Excel contenham os mesmos valores nas mesmas linhas e colunas, mas que o bytestream do arquivo seja completamente diferente devido a diferentes formatações, estilos, configurações, etc.
Se você deseja comparar os dados no arquivo, exporte-os para CSV com as mesmas linhas e colunas primeiro, para remover toda a formatação e, em seguida, use o hash ou compare os CSVs.