Việc thay đổi tên tệp có ảnh hưởng đến MD5 Hash của một tệp không?


89

Thay đổi tên tệp có ảnh hưởng đến MD5 Hash của một tệp không?

Câu trả lời:


31

Chỉ khi tên của tệp được bao gồm trong phép tính băm. ví dụ: trong mã giả:

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

sẽ tạo ra hai hàm băm riêng biệt.


20
Câu hỏi đang hỏi về công cụ CLI "md5sum", không phải thuật toán nói chung.
jameshfisher

206

Không, hàm băm chỉ dành cho nội dung tệp. Bạn có thể thấy điều này trong nguồnmd5sumtriển khai MD5 của nó . Bạn cũng có thể kiểm tra điều này nếu bạn có quyền truy cập vào md5sum:

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

18
Đây sẽ là câu trả lời. Câu hỏi được gắn thẻ "md5sum".
ingyhere

3
Cảm ơn vì một câu trả lời thẳng thắn.
Eddie B

Hoàn hảo! Tôi không có Linux để thử điều đó. Nhưng tôi có Stackoverflow :)
Faizan

Bạn không cần sử dụng Linux để biết điều này. Bạn có thể tạo ra kết quả tương tự trên MacOSX hoặc Windows.
Alexandre Mulatinho

1
Trong trường hợp bất kỳ ai đang tìm kiếm các cửa sổ tương đương như @alexandreMulatinho đã đề cập: hãy thay thế md5sum bằng fciv và cp bằng bản sao, và nó hoạt động giống nhau. Sau đó, nếu bạn nhập hệ thống con cửa sổ cho linux, các băm md5sum khớp với các băm fciv.
Jake Stevens-Haas

4

Trong Linux sử dụng hệ thống tệp EXT, nó sẽ không, vì tên tệp không được lưu trữ trong tệp, nó được lưu trữ trong mục nhập thư mục (răng cưa) mà tệp đó nằm trong đó, nơi inode của tệp sau đó được ánh xạ thành tên. Thay đổi tên tệp sẽ không ảnh hưởng đến md5sum của nó trong Linux. Trong Windows, tôi không thể chắc chắn.


3
Ngoài ra, hệ thống tệp Windows không lưu trữ tên tệp trong tệp. Một cổng đơn giản md5sumsẽ hoạt động như mong đợi.
MauganRa

1

Nếu hàm băm được tính từ nội dung tệp, thì không nên.


4
Câu hỏi đang hỏi về công cụ CLI "md5sum", không phải thuật toán nói chung.
jameshfisher

0

Trong ESXi (Chính xác là ESXi 5.5), md5sum trên cùng một nội dung nhưng các tên tệp khác nhau thì khác nhau. Điều đó khiến tôi tin rằng cấu trúc tệp VMFS-5 cũng bao gồm tên tệp. Nếu chúng tôi không quan tâm đến tên tệp, Có cách nào để chỉ kiểm tra md5sum của nội dung tệp không? Tôi không thể thấy bất kỳ tùy chọn nào. Bất kỳ đề xuất?


Bạn đang nói về những tập tin nào? Hình ảnh đĩa ảo ( .vmdk)? Trong tiêu đề vmdk có dữ liệu có thể phụ thuộc vào tên tệp và vị trí. Bạn đã đổi tên các tệp trong thử nghiệm của mình như thế nào? --- Mặt khác, từ quan điểm nội dung tệp, VMFS là một hệ thống tệp bình thường và nội dung của tệp không phụ thuộc trực tiếp vào tên của chúng.
pabouk

-1

Để trả lời nhận xét, https://stackoverflow.com/a/14360831/9392847 :

Điều này chỉ hoạt động nếu một tệp là bản sao của tệp khác nhưng không hoạt động khi hai tệp khác nhau có tên khác nhau được tạo với nội dung giống hệt nhau. Tôi đã thử điều này:

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

Cả hai tệp 1test.pdf và 2test.pdf đều được tạo bằng phần mềm gimp . Cùng một nội dung được xuất hai lần với hai tên khác nhau.


Điều đó có nghĩa các nội dung tập tin không phải là giống hệt nhau ... Chương trình phải xuất siêu dữ liệu khác nhau trong từng
Milney

-2

1.md5 được tính toán dựa trên nội dung nhị phân của FILE. 2.Tên tập tin, sửa đổi lần cuối, v.v. mọi thứ là dữ liệu meta.md5 không thực sự dựa vào dữ liệu siêu dữ liệu. Tôi đã kiểm tra điều này bằng các bước dưới đây, hãy làm việc với siêu dữ liệu "được sửa đổi lần cuối" i) Tôi đã tạo một tệp có tên "a.txt" và thêm một số nội dung và tạo một hàm băm nói rằng hàm băm là "xyz" ii) Sau đó, tôi có chỉ cần thêm một khoảng trống trong tệp và một lần nữa tính toán băm nói rằng nó trả về "abc" iii) Tôi vừa xóa thay đổi của mình ở bước (ii), khi tính toán lại băm, tôi đã có được băm ban đầu ("xyz")

Điều này kết luận rằng ngay cả khi siêu dữ liệu của tệp được thay đổi, hàm băm vẫn giữ nguyên cho đến khi nội dung tệp không thay đổi.

Hy vọng nó giúp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.