Mudar o nome do arquivo afetará o Hash MD5 de um arquivo?


Respostas:


31

Somente se o nome do arquivo foi incluído no cálculo de hash. por exemplo, em pseudocódigo:

$hash1 = md5(contents of file);
$hash2 = md5(name of file + contents of file);

irá produzir dois hashes separados.


20
A questão é sobre a ferramenta CLI "md5sum", não sobre o algoritmo em geral.
jameshfisher de

205

Não, o hash é apenas do conteúdo do arquivo. Você pode ver isso no código-fontemd5sum e em sua implementação MD5 . Você também pode testar isso se tiver acesso a md5sum:

$ echo "some arbitrary content" > file1
$ cp file1 file2
$ md5sum file1
f0007cbddd79de02179de7de12bec4e6  file1
$ md5sum file2
f0007cbddd79de02179de7de12bec4e6  file2
$

18
Esta deve ser a resposta. A pergunta foi marcada como "md5sum".
ingyhere

3
Obrigado por uma resposta direta.
Eddie B

Perfeito! Eu não tinha Linux para tentar isso. Mas eu tenho Stackoverflow :)
Faizan

Você não precisa usar o Linux para saber disso. Você pode produzir o mesmo resultado no MacOSX ou Windows.
Alexandre Mulatinho

1
Caso alguém esteja procurando o equivalente do windows como @alexandreMulatinho citado: substitua md5sum por fciv e cp por copy, e funciona da mesma forma. Se você então entrar no subsistema windows para linux, os hashes md5sum correspondem aos fciv.
Jake Stevens-Haas

4

No Linux usando o sistema de arquivos EXT, isso não acontecerá, porque um nome de arquivo não é armazenado em um arquivo, ele é armazenado na entrada do diretório (dentry) em que o arquivo reside, onde o inode do arquivo é então mapeado para um nome. Mudar um nome de arquivo não afetará seu md5sum no Linux. No Windows, não tenho certeza.


3
Além disso, os sistemas de arquivos do Windows não armazenam o nome do arquivo no arquivo. Uma porta simples de md5sumdeve se comportar conforme o esperado.
MauganRa

1

Se o hash for calculado a partir do conteúdo do arquivo, não deveria.


4
A questão é sobre a ferramenta CLI "md5sum", não sobre o algoritmo em geral.
jameshfisher de

0

Em ESXi (Precisamente ESXi 5.5), md5sum no mesmo conteúdo, mas com nomes de arquivo diferentes, é diferente. Isso me leva a acreditar que a estrutura do arquivo VMFS-5 também inclui o nome do arquivo. Se não estivermos preocupados com o nome do arquivo, existe uma maneira de verificar apenas o md5sum do conteúdo do arquivo? Não consegui ver nenhuma opção. Alguma sugestão?


De quais arquivos você está falando? Imagens de disco virtual ( .vmdk)? Nos cabeçalhos vmdk, existem dados que podem depender do nome e da localização do arquivo. Como você renomeou os arquivos em seu teste? --- Caso contrário, do ponto de vista do conteúdo do arquivo, o VMFS é um sistema de arquivos normal e o conteúdo dos arquivos não depende diretamente de seus nomes.
pabouk

-1

Em resposta ao comentário, https://stackoverflow.com/a/14360831/9392847 :

Isso funciona apenas se um arquivo for uma cópia de outro arquivo, mas não quando dois arquivos diferentes com nomes diferentes forem gerados com exatamente o mesmo conteúdo. Eu tentei isso:

nancy@nancy:~/Documents$ md5sum /home/nancy/Documents/1test.pdf
c5a445b7186dfb220ea79d2001acf3f1  /home/nancy/Documents/1test.pdf
nancy@nancy:~/Documents$ md5sum /home/nancy/Documents/2test.pdf
cefa063abf0c0a9e80b2b75e70100836  /home/nancy/Documents/2test.pdf

Ambos os arquivos 1test.pdf e 2test.pdf são criados usando o software gimp . O mesmo conteúdo é exportado duas vezes com dois nomes diferentes.


Isso significa que o conteúdo do arquivo não é exatamente o mesmo ... O programa deve exportar metadados diferentes em cada um
Milney

-2

1.md5 é calculado com base no conteúdo binário do ARQUIVO. 2. Nome do arquivo, última modificação etc. coisas são metadados. O md5 realmente não depende de metadados. Eu testei isso com as etapas abaixo, vamos trabalhar com os meta-dados da "última modificação" i) Eu criei um arquivo chamado "a.txt" e adicionei algum conteúdo e criei um hash, digamos que o hash é "xyz" ii) Então eu tenho acabei de adicionar um espaço no arquivo e calculei novamente o hash diga que retornou "abc" iii) Acabei de remover minha alteração na etapa (ii), ao calcular o hash novamente obtive o hash inicial ("xyz")

Isso conclui que, embora os metadados do arquivo sejam alterados, o hash permanece o mesmo até que o conteúdo do arquivo permaneça inalterado.

Espero que ajude.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.