ไฟล์ศูนย์ไบต์สามารถสร้างค่าแฮชได้อย่างไร?


20

ไฟล์ข้อความศูนย์ไบต์จะสร้างแฮชได้อย่างไรเมื่อแฮชด้วย sha1sum, sha256sum และอื่น ๆ โปรแกรมใดที่ hashing ข้อมูลเพื่อสร้างค่าแฮช?

ขอบคุณ

QuickHash ใน Linux

คำสั่งเทอร์มินัล

คำตอบ:


21

อัลกอริทึมแฮชอ่านอินพุตและประมวลผลไม่ว่าจะมีข้อมูลใดอยู่ก็ตาม นี่เป็นพฤติกรรมที่ถูกต้องและต้องการและใช้เพื่อตรวจสอบว่าการใช้งานบางอย่างถูกต้องหรือไม่ สิ่งนี้นำไปสู่ ​​"แฮชว่างเป็นโมฆะ" สำหรับอัลกอริธึมที่สำคัญทั้งหมด

หากต้องการรวม: da39a3ee5e6b4b0d3255bfef95601890afd80709 คือ sha1-hash สำหรับไฟล์ว่างทุกที่ซึ่งเป็นจริงด้วย null-hash ของ alrogrithms อื่น ๆ


1
คุณเรียนรู้สิ่งใหม่ทุกวัน! ฉันไม่รู้ว่ามี "ค่า null" สำหรับทุกอัลกอริทึม ขอบคุณมาก.
Gizmo_the_Great

3
อัลกอริธึมการแฮชมีเงื่อนไขเริ่มต้นที่กำหนดไว้ล่วงหน้าเช่นชนิดของตัวเลขที่เริ่มต้นด้วยและกลายพันธุ์เมื่ออ่านข้อมูล หากไม่มีข้อมูลให้อ่านแฮชจะเป็นผลมาจากเงื่อนไขเริ่มต้นที่กำหนดไว้ล่วงหน้า
เควิน

เหตุผลก็เป็นเพราะอัลกอริทึม sha1 ต่อท้ายความยาวของข้อมูล (ในกรณีนี้: ศูนย์) และมีการตั้งค่าสถานะและช่องว่างภายในบางอย่างเพิ่มลงในข้อความเช่นกัน ดังนั้นแม้ "ไม่มีข้อมูล" จะยังคงส่งผลให้ข้อมูลบางส่วนถูกประมวลผล
user92979

14

ทุกขั้นตอนวิธีกัญชาในแฮด่วนมีการก่อสร้าง Merkle-Damgård ด้วยเหตุนี้จึงทำให้ข้อความมีขนาดบล็อกหลายขนาด

อัลกอริธึมของ Quick Hash ทำสิ่งนี้ได้โดยการผนวก1บิตได้มาก0เท่าที่ต้องการและสุดท้ายความยาวของข้อความ

การทำเช่นนี้ช่วยให้ข้อความที่ถูกแฮชมีความยาวโดยพลการรวมถึงข้อความที่มีความยาวเป็นศูนย์


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

1

(Add-on เพื่อ Dennis และคำตอบของ fixer1234?)

ชัดถ้อยชัดคำ:

$ shasum -a 256 /dev/null e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /dev/null

ไฟล์ 0 ไบต์ทั้งหมดจะมีการตรวจสอบเดียวกัน

$ shasum -a 512 /dev/null cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e /dev/null

$ shasum /dev/null da39a3ee5e6b4b0d3255bfef95601890afd80709 /dev/null

$ md5 /dev/null MD5 (/dev/null) = d41d8cd98f00b204e9800998ecf8427e (หมายเหตุ: MD5 ใช้งานไม่ได้มันไม่ใช่ 'แฮชที่ปลอดภัย' นี่เป็นเอกสารในรายการ MD5 ใน Wikipedia)

ตัวอย่างเช่นหากคุณกำลังพยายามตรวจสอบความไร้เดียงสาของไฟล์ที่virustotal.comด้วยหนึ่งในค่าแฮชที่ปลอดภัยที่ระบุไว้ที่นี่เช่นda39a3ee5e6b4b0d3255bfef95601890afd80709จากนั้นคุณสามารถมั่นใจได้ว่าไฟล์นั้นมีขนาด 0 ไบต์ (หรือเป็นโฟลเดอร์ซึ่ง virustotal, สับสน, แฮชราวกับว่ามันเป็นไฟล์ 0- ไบต์)


สิ่งนี้จะเพิ่มคำตอบปัจจุบันได้อย่างไร
MátéJuhász

โดยการให้วิธีที่สงสัยโดยตรงเพื่อยืนยันว่าเป็นกรณีที่ไฟล์ 0 ไบต์ทั้งหมดจะมีการตรวจสอบเดียวกันหลายคนสงสัยในเรื่องนี้เมื่อพูดถึงความไร้เดียงสาของไฟล์ 0 ไบต์ที่ virustotal.com ดังนั้นฉันคิดว่ามันจะเพิ่มวิธีการแก้ปัญหาสำหรับคนที่มาถึงคำถามนี้ไม่แน่ใจว่ามันเป็นความจริงหรือไม่ว่าถ้าการตรวจสอบนั้นเป็นจริง
Matthew Elvey
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.