การเปลี่ยนชื่อไฟล์จะส่งผลต่อ MD5 Hash ของไฟล์หรือไม่


คำตอบ:


31

เฉพาะในกรณีที่ชื่อไฟล์รวมอยู่ในการคำนวณแฮช เช่นในรหัสหลอก:

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

จะสร้างแฮชสองอันแยกกัน


20
คำถามคือถามเกี่ยวกับเครื่องมือ CLI "md5sum" ไม่ใช่อัลกอริทึมโดยทั่วไป
jameshfisher

206

ไม่แฮชเป็นของเนื้อหาไฟล์เท่านั้น คุณสามารถดูนี้ในแหล่งที่มาสำหรับmd5sumและการดำเนินงานของ MD5 คุณสามารถทดสอบสิ่งนี้ได้หากคุณสามารถเข้าถึงmd5sum:

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

18
นี่น่าจะเป็นคำตอบ คำถามถูกแท็ก "md5sum"
นี่

3
ขอบคุณสำหรับคำตอบที่ตรง
Eddie B

สมบูรณ์แบบ! ฉันไม่มีลินุกซ์ให้ลองใช้ แต่ฉันมี Stackoverflow :)
Faizan

คุณไม่จำเป็นต้องใช้ Linux เพื่อทราบสิ่งนี้ คุณสามารถสร้างผลลัพธ์เดียวกันบน MacOSX หรือ Windows
Alexandre Mulatinho

1
ในกรณีที่ใครก็ตามที่กำลังมองหา windows ที่เทียบเท่าเช่น @alexandreMulatinho กล่าวถึง: แทนที่ md5sum ด้วย fciv และ cp ด้วยสำเนาและมันก็ใช้งานได้เหมือนกัน หากคุณเข้าสู่ระบบย่อย windows สำหรับ linux แล้ว md5sum แฮชจะตรงกับ fciv
Jake Stevens-Haas

4

ใน Linux ที่ใช้ระบบไฟล์ EXT จะไม่เนื่องจากชื่อไฟล์ไม่ได้ถูกเก็บไว้ในไฟล์ชื่อไฟล์จะถูกเก็บไว้ในรายการไดเร็กทอรี (dentry) ที่ไฟล์นั้นอยู่ซึ่งไอโหนดของไฟล์จะถูกแมปกับชื่อ การเปลี่ยนชื่อไฟล์จะไม่มีผลกับ md5sum ใน Linux ใน Windows ฉันไม่สามารถแน่ใจได้


3
นอกจากนี้ระบบไฟล์ Windows จะไม่เก็บชื่อไฟล์ไว้ในไฟล์ พอร์ตที่ตรงไปตรงมาmd5sumควรทำงานตามที่คาดไว้
MauganRa

1

หากแฮชคำนวณจากเนื้อหาของไฟล์ไม่ควรทำเช่นนั้น


4
คำถามคือถามเกี่ยวกับเครื่องมือ CLI "md5sum" ไม่ใช่อัลกอริทึมโดยทั่วไป
jameshfisher

0

ใน ESXi (อย่างแม่นยำ ESXi 5.5) md5sum บนเนื้อหาเดียวกัน แต่ชื่อไฟล์ต่างกัน นั่นทำให้ฉันเชื่อว่าโครงสร้างไฟล์ VMFS-5 มีชื่อไฟล์ด้วย หากเราไม่กังวลเกี่ยวกับชื่อไฟล์มีวิธีตรวจสอบเฉพาะ md5sum ของเนื้อหาไฟล์หรือไม่? ฉันไม่เห็นตัวเลือกใด ๆ ข้อเสนอแนะใด ๆ ?


คุณกำลังพูดถึงไฟล์ใด อิมเมจดิสก์เสมือน ( .vmdk)? ในส่วนหัว vmdk มีข้อมูลซึ่งอาจขึ้นอยู่กับชื่อไฟล์และตำแหน่ง คุณเปลี่ยนชื่อไฟล์ในการทดสอบของคุณอย่างไร? --- มิฉะนั้นจากมุมมองเนื้อหาไฟล์ VMFS เป็นระบบไฟล์ปกติและเนื้อหาของไฟล์ไม่ได้ขึ้นอยู่กับชื่อของไฟล์โดยตรง
pabouk

-1

ในการตอบกลับความคิดเห็นhttps://stackoverflow.com/a/14360831/9392847 :

การดำเนินการนี้จะใช้ได้เฉพาะเมื่อไฟล์หนึ่งเป็นสำเนาของไฟล์อื่น แต่ไม่ใช่เมื่อไฟล์ที่แตกต่างกันสองไฟล์ที่มีชื่อต่างกันถูกสร้างขึ้นโดยมีเนื้อหาเดียวกัน ฉันได้ลองสิ่งนี้:

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

ทั้งไฟล์ 1test.pdf และ 2test.pdf สร้างขึ้นโดยใช้ซอฟต์แวร์gimp เนื้อหาเดียวกันจะถูกส่งออกสองครั้งโดยมีชื่อต่างกันสองชื่อ


นั่นหมายความว่าเนื้อหาของไฟล์ไม่เหมือนกันทุกประการ ... โปรแกรมต้องส่งออกข้อมูลเมตาที่แตกต่างกันในแต่ละรายการ
Milney

-2

1.md5 คำนวณจากเนื้อหาไบนารีของ FILE 2. ชื่อไฟล์การแก้ไขล่าสุด ฯลฯ สิ่งต่างๆคือ meta data.md5 ไม่ได้พึ่งพาข้อมูลเมตา ฉันได้ทดสอบสิ่งนี้ด้วยขั้นตอนด้านล่างให้ทำงานกับ meta-data ที่ "แก้ไขล่าสุด" i) ฉันได้สร้างไฟล์ชื่อ "a.txt" และเพิ่มเนื้อหาบางส่วนและสร้างแฮชว่าแฮชคือ "xyz" ii) จากนั้นฉันก็มี เพิ่งเพิ่มช่องว่างในไฟล์และคำนวณแฮชอีกครั้งบอกว่ามันส่งคืน "abc" iii) ฉันเพิ่งลบการเปลี่ยนแปลงในขั้นตอน (ii) ในการคำนวณแฮชอีกครั้งฉันได้แฮชเริ่มต้น ("xyz")

สรุปได้ว่าแม้ว่าข้อมูลเมตาของไฟล์จะเปลี่ยนไป แต่แฮชก็ยังคงเหมือนเดิมจนกว่าเนื้อหาของไฟล์จะไม่เปลี่ยนแปลง

หวังว่าจะช่วยได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.