เช็คซัมมีเอกลักษณ์อย่างไร?


11

ฉันมีไฟล์จำนวนมากที่ฉันต้องการเรียงลำดับ; และน่าเศร้าที่มีไฟล์จำนวนมากที่มีชื่อเดียวกัน แต่เนื้อหาต่างกันและมีเนื้อหาเดียวกันกับชื่อไฟล์ที่แตกต่างกัน

ฉันกำลังคิดเกี่ยวกับการใช้md5sumเพื่อสร้าง checksums สำหรับไฟล์ แต่ฉันจำเป็นต้องรู้ - เป็นไปได้ไหมว่าไฟล์ที่ต่างกันสองไฟล์ (เช่นเนื้อหาที่แตกต่างกัน) จะสร้าง checksum เดียวกันหรือไม่

ถ้าเป็นเช่นนั้นจะเกิดขึ้นได้อย่างไร

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


2
โปรดจำไว้ว่า md5 / sha2 / etc เป็น HASH ของข้อมูลดังนั้นการจับคู่ข้อมูลจำนวนมากกับพื้นที่บิตที่เล็กลงดังนั้นจึงเป็นไปได้ที่อาจมีการชนกัน แฮชไม่ใช่กุญแจสำคัญและถ้านั่นคือเป้าหมายของคุณ ... ฉันขอแนะนำอย่างยิ่งให้ทำอย่างอื่น
mdpc

สำหรับการจัดเรียงไฟล์ MD5 นั้นใช้ได้ จากcrypto.stackexchange.com/a/18337/49945ความน่าจะเป็นของการตรวจสอบการชนกันของเนื้อหาที่แตกต่างกันสองรายการคือ 1 ใน 2 ^ 128 ซึ่งประมาณ 1 ใน 10 ^ 43 นั่นหายากจริงๆ ถ้าคุณทำการเปรียบเทียบหนึ่งครั้งต่อไมโครวินาทีโดยเฉลี่ยคุณจะได้รับการชนหนึ่งครั้งใน 10 ^ 20 ปี มันเป็นเพียง ~ 10 ^ 9 ปีตั้งแต่บิกแบงดังนั้นโอกาสที่จะเกิดการปะทะกันแม้จะเป็นเพียงครั้งเดียวในการเปรียบเทียบหนึ่งครั้งต่อไมโครวินาทีจากบิ๊กแบงจนถึงตอนนี้ยังเหลือเพียง 1 ใน 10 ^ 11 เมื่อให้คอมพิวเตอร์พร้อมกันหนึ่งแสนล้านเครื่องมีเพียงคนเดียวเท่านั้นที่จะเห็นการชนกัน
ToolmakerSteve

... ถึงแม้ว่ามันจะไม่ชัดเจนว่าทำไมคุณถึงต้องใช้อัลกอริธึมแฮชเมื่อทำการเรียงไฟล์ หากมีไฟล์ที่มีชื่อเหมือนกันไฟล์เหล่านั้นจะต้องสามารถระบุตัวได้ด้วยเกณฑ์อื่น ๆ ; เช่นต้องมีเส้นทางที่ไม่ซ้ำกันไปยังไฟล์หรืออาจเป็นออฟเซ็ตไบต์ภายในอุปกรณ์เก็บข้อมูลบางอย่าง? สิ่งเหล่านี้จะเป็นวิธีที่มีประโยชน์มากกว่าในการอ้างถึงไฟล์
ToolmakerSteve

คำตอบ:


11

สองไฟล์ที่มีเนื้อหาเหมือนกัน แต่ชื่อไฟล์ต่างกัน: ( file1และfile2 ):

cat file1
this is a simple file

cat file2
this is a simple file

md5sum file1
7de45bf879db49de7e2eacea23e6c165  file1
md5sum file2
7de45bf879db49de7e2eacea23e6c165  file2

สองไฟล์ที่มีเนื้อหาต่างกัน แต่ชื่อไฟล์เดียวกัน: ( file1และfile1 )

cat file1
this is a simple file
cat file1
this is a simple file with extra contents
md5sum file1 #first file1
7de45bf879db49de7e2eacea23e6c165  file1
md5sum file1 #second file1
c7c8f3fd9ddd7a926c31416a69063e4e  file1

จากรายการwiki

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

แต่อัลกอริทึมMD5มีข้อบกพร่องของตัวเอง

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

ฉันอยากจะแนะนำให้ใช้ sha1 สำหรับการคำนวณผลรวมตรวจสอบเนื่องจากการสร้างการชนไม่ใช่เรื่องง่ายเมื่อใช้อัลกอริทึมsha1 การผลิตการตรวจสอบ sha1 เป็นเรื่องง่ายสวยที่คุณสามารถดูที่นี่


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