ในทางปฏิบัติใช่แฮชการเข้ารหัสลับที่เหมือนกันหมายความว่าไฟล์เหมือนกันตราบใดที่ไฟล์ไม่ได้ถูกสร้างขึ้นโดยผู้โจมตีหรือเอนทิตีที่เป็นอันตรายอื่น ๆ อัตราต่อรองของการชนแบบสุ่มด้วยฟังก์ชันแฮ็คการเข้ารหัสที่ได้รับการออกแบบมาอย่างดีนั้นมีขนาดเล็กมากจนแทบไม่มีความสำคัญในทางปฏิบัติและในกรณีที่ไม่มีผู้โจมตีที่ใช้งานอยู่
โดยทั่วไป แต่ไม่มีเราไม่สามารถพูดได้ว่าทั้งสองไฟล์โดยพลการมีกัญชาเดียวกันแน่นอนหมายความว่าพวกเขาจะเหมือนกัน
วิธีที่ฟังก์ชั่นแฮชเข้ารหัสนั้นใช้ความยาวโดยพลการและส่งออกค่าความยาวคงที่ที่คำนวณจากอินพุต ฟังก์ชันแฮชบางตัวมีความยาวเอาต์พุตหลายแบบให้เลือก แต่เอาต์พุตยังคงมีค่าความยาวคงที่ในระดับหนึ่ง ค่านี้จะมีความยาวไม่เกินสิบสองไบต์ อัลกอริธึมการแฮชที่มีค่าเอาต์พุตที่ยาวที่สุดที่ใช้กันทั่วไปในปัจจุบันมีเอาต์พุต 512 บิตและเอาต์พุต 512 บิตคือ 64 ไบต์
หากอินพุตไปยังฟังก์ชันแฮชนานกว่าเอาต์พุตของฟังก์ชันแฮชจะต้องลบความเที่ยงตรงบางส่วนออกเพื่อให้อินพุตเหมาะสมในเอาต์พุต ดังนั้นจะต้องมีอินพุตหลายตัวที่มีความยาวมากกว่าความยาวของเอาต์พุตซึ่งสร้างเอาต์พุตเดียวกัน
ลองมาเป็นตัวอย่างผลงานปัจจุบันของ SHA-256 ส่งเอาต์พุตแฮชของ 256 บิตหรือ 32 ไบต์ หากคุณมีไฟล์สองไฟล์ซึ่งมีความยาว 32 ไบต์ แต่แตกต่างกันควรจะแฮชเหล่านี้ (โดยไม่มีข้อบกพร่องในอัลกอริทึม) แฮชกับค่าที่แตกต่างกันไม่ว่าเนื้อหาของไฟล์จะเป็นอย่างไร ในแง่คณิตศาสตร์แฮชคือฟังก์ชันแมปพื้นที่อินพุต2 256ลงบนพื้นที่เอาต์พุต2 256ซึ่งควรทำโดยไม่มีการชน แต่ถ้าคุณมีสองไฟล์ที่ 33 ไบต์ยาวต้องมีบางอย่างรวมกันของปัจจัยการผลิตที่ให้ 32 ไบต์ค่าแฮชเอาท์พุทเหมือนกันสำหรับทั้งสองไฟล์เพราะตอนนี้เราทำแผนที่ 2 264เข้าพื้นที่บน 2 256พื้นที่ส่งออก; ที่นี่เราสามารถเห็นได้อย่างชัดเจนว่าโดยเฉลี่ยแล้วควรมี 2 8อินพุตสำหรับแต่ละเอาต์พุต ใช้สิ่งนี้เพิ่มเติมและด้วยไฟล์ 64- ไบต์ควรมี 2 256อินพุตสำหรับทุกเอาต์พุต!
ฟังก์ชันแฮชการเข้ารหัสได้รับการออกแบบให้ยากต่อการคำนวณอินพุตที่ให้เอาต์พุตเฉพาะหรือคอมโพสิตสองอินพุตที่ให้เอาต์พุตเหมือนกัน นี้เรียกว่าการโจมตี preimageต้านทานหรือการโจมตีชนต้านทาน ไม่สามารถหาการชนเหล่านี้ได้ มันตั้งใจที่จะเป็นจริงๆจริงๆยากจริงๆ (บิตของกรณีพิเศษของการโจมตีการชนกันคือการโจมตีวันเกิด )
อัลกอริธึมบางอย่างดีกว่าวิธีอื่นในการต่อต้านผู้โจมตี MD5 นั้นโดยทั่วไปถือว่าแตกหักอย่างสมบูรณ์ในวันนี้ แต่สุดท้ายที่ฉันดูมันก็ยังคงมีการต้านทานpreimage แรกที่ดีงาม SHA-1 ก็หักได้อย่างมีประสิทธิภาพเช่นเดียวกัน การโจมตีของ preimage แสดงให้เห็นแล้ว แต่ต้องการเงื่อนไขที่เฉพาะเจาะจงแม้ว่าจะไม่มีเหตุผลที่จะเชื่อได้ว่าจะเป็นเช่นนั้นอย่างไม่มีกำหนด เมื่อการโจมตีเริ่มดีขึ้นพวกเขาก็ไม่เคยแย่ไปกว่านี้อีกแล้ว ปัจจุบัน SHA-256/384/512 ยังเชื่อว่าปลอดภัยสำหรับวัตถุประสงค์ส่วนใหญ่ อย่างไรก็ตามหากคุณสนใจที่จะดูว่ามีสองรายการที่ไม่ได้ออกแบบมาเพื่อประสงค์ร้ายหรือไม่ไฟล์เหมือนกันดังนั้นไฟล์เหล่านี้ควรเพียงพอเนื่องจากพื้นที่อินพุตมีข้อ จำกัด เพียงพออยู่แล้วและคุณจะสนใจการชนแบบสุ่มเป็นส่วนใหญ่ หากคุณมีเหตุผลที่เชื่อได้ว่าไฟล์นั้นถูกสร้างขึ้นมาโดยประสงค์ร้ายคุณต้องใช้ฟังก์ชั่นแฮชเข้ารหัสอย่างน้อยที่สุดซึ่งเชื่อว่าปลอดภัยในปัจจุบันซึ่งวางแถบด้านล่างที่ SHA-256
First preimage คือการค้นหาอินพุตที่ให้ค่าแฮชเอาต์พุตเฉพาะ preimage ที่สองคือการหาอินพุตหนึ่งที่ให้เอาต์พุตเดียวกันกับอีกอินพุตที่ระบุ การชนกันคือการหาอินพุตสองอินพุตที่ให้เอาต์พุตเดียวกันโดยไม่คำนึงถึงสิ่งที่เป็นและบางครั้งโดยไม่คำนึงถึงอินพุตนั้น
ทั้งหมดที่กล่าวมาเป็นสิ่งสำคัญที่ต้องจำไว้ว่าไฟล์อาจมีการแสดงข้อมูลที่แตกต่างกันมากและยังคงแสดงเหมือนกันทุกประการ ดังนั้นพวกเขาจึงดูเหมือนจะเหมือนกันแม้ว่าแฮชเข้ารหัสของพวกเขาจะไม่ตรงกัน แต่ถ้าแฮชตรงกันพวกเขาก็มีแนวโน้มที่จะปรากฏเหมือนกัน
cmp
Unix หรือfc
(เปรียบเทียบไฟล์) บน Windows ได้อย่างง่ายดาย