เปรียบเทียบข้อความสองชุดด้วยแฮช

ป้อนข้อความที่ต้องการแฮช

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

วิธีตรวจว่าข้อความสองชุดตรงกันหรือไม่

  1. 1

    แฮชข้อความแรก

    วางข้อความแรก คง SHA-256 ไว้ แล้วสร้าง คัดลอกหรือจดไดเจสต์ไว้

  2. 2

    เริ่มใหม่ด้วยข้อความที่สอง

    แทนที่ข้อความด้วยเวอร์ชันที่สอง โดยใช้อัลกอริทึมเดิม

  3. 3

    เทียบไดเจสต์

    หากอักขระ 64 ตัวเหมือนกันทั้งหมด ข้อความทั้งสองคือไบต์ชุดเดียวกัน หากอักขระตัวใดต่างกัน ข้อความก็ต่างกัน

  4. 4

    จำกัดขอบเขตเมื่อจำเป็น

    เมื่อต่างกัน ให้แฮชส่วนย่อยของแต่ละข้อความเพื่อหาย่อหน้าที่เปลี่ยนไป

ทำไมแฮชจึงเป็นวิธีเปรียบเทียบที่เชื่อถือได้

ฟังก์ชันแฮชที่ดีจะส่งอินพุตที่ต่างกันแต่ละค่าไปยังไดเจสต์ที่ต่างกันและคาดเดาไม่ได้ สำหรับ SHA-256 ยังไม่มีวิธีที่รู้จักในการหาข้อความสองชุดที่ต่างกันซึ่งมีไดเจสต์เดียวกัน ดังนั้นไดเจสต์ที่ตรงกันหมายถึงเนื้อหาที่ตรงกันในทางปฏิบัติ ไดเจสต์ยังสั้น คุณจึงเทียบ 64 อักขระแทนที่จะเทียบทั้งหน้า

ตัวอย่าง

ข้อความ SHA-256
hello 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
Hello 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

ข้อความทั้งสองต่างกันเพียงตัวอักษรพิมพ์ใหญ่หนึ่งตัว แต่ไดเจสต์ไม่มีความคล้ายกันให้เห็น ทำให้แม้การแก้ไขเล็กน้อยก็เห็นได้ชัด

อะไรนับเป็นความต่าง

การเปรียบเทียบทำทีละไบต์ สิ่งต่อไปนี้ล้วนเปลี่ยนไดเจสต์:

  • ช่องว่างที่เกินมาท้ายบรรทัด
  • การขึ้นบรรทัดใหม่ที่ท้ายข้อความ
  • เครื่องหมายคำพูดหรือขีดที่ต่างชนิดแต่ดูเหมือนกันบนหน้าจอ
  • อักษรที่มีวรรณยุกต์หรือเครื่องหมายกำกับที่พิมพ์ต่างวิธี เช่น พยัญชนะกับเครื่องหมายแยกต่างหาก เทียบกับอักษรที่รวมเป็นตัวเดียว

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

การเลือกอัลกอริทึม

ใช้อัลกอริทึมเดียวกันกับข้อความทั้งสอง SHA-256 เป็นค่าเริ่มต้นที่ปลอดภัย MD5 และ SHA-1 ก็ตรวจพบความต่างทั่วไปได้ แต่ไม่ควรใช้หากมีคนอาจสร้างการชนกันโดยเจตนา CRC32 สั้นกว่าแต่อ่อนแอกว่าในชุดข้อมูลขนาดใหญ่

โปรดทราบว่าเครื่องมือนี้แสดงไดเจสต์ทั้งหมดของข้อความที่คุณแฮชไว้ในรายการเต็ม จึงสามารถเทียบหลายอัลกอริทึมได้ในรอบเดียว

ขั้นตอนการทำงานจริง

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

เมื่อไดเจสต์ไม่ตรงกัน

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

คำถามที่พบบ่อย

กับ SHA-256 หรือ SHA-512 ถือว่าเหมือนกันในทางปฏิบัติ กับ MD5, SHA-1 หรือ CRC32 การตรงกันเป็นหลักฐานที่แข็งแรงว่าไม่ใช่ความผิดพลาดโดยบังเอิญ แต่ยังไม่พอต่อการสร้างการชนกันโดยเจตนา

สำคัญ บรรทัดเดิมที่สลับลำดับจะมีลำดับไบต์ต่างกัน ไดเจสต์จึงต่างกันด้วย

ไม่ได้ เครื่องมือแฮชข้อความทีละชุด และคุณต้องเทียบไดเจสต์เอง เครื่องมือจะไม่ไฮไลต์ความต่าง

นับว่าต่าง Hello และ hello มีไดเจสต์ต่างกัน หากไม่ต้องการให้ตัวพิมพ์มีผล ให้แปลงทั้งสองข้อความเป็นรูปแบบเดียวกันก่อน

เครื่องมือที่เกี่ยวข้อง

รหัสแปลงตัวเลขเป็นตัวอักษร

แปลงตัวเลขเป็นตัวอักษรและย้อนกลับด้วยรหัส A=1, B=2 (A1Z26) สำหรับปริศนา คำทาย และเบาะแสในห้องเอสเคปรูม

เครื่องมือเข้ารหัส Vigenère

เข้ารหัสและถอดรหัสข้อความด้วยรหัส Vigenère แบบคลาสสิกโดยใช้คำสำคัญ เลื่อนตัวอักษรละติน A-Z พร้อมคงตัวพิมพ์ใหญ่-เล็ก ช่องว่าง และเครื่องหมายวรรคตอน

ตัวสร้าง TOTP

สร้างรหัสผ่านแบบใช้ครั้งเดียวตามเวลา (RFC 6238) จากคีย์ลับ Base32 รองรับ SHA-1, SHA-256, SHA-512 จำนวน 6 ถึง 8 หลัก และช่วงเวลา 30 หรือ 60 วินาที

เครื่องแปลง Wei เป็น Ether

แปลง Wei เป็น Ether (ETH) ด้วยการคำนวณที่แม่นยำ ไม่มีการปัดเศษแบบจุดลอยตัว 1 ETH = 10^18 Wei

เครื่องมือเข้ารหัสข้อความ

เข้ารหัสและถอดรหัสข้อความโดยใช้ AES พร้อมรหัสผ่าน เพื่อให้มีเพียงผู้รับเท่านั้นที่สามารถอ่านข้อความได้

เครื่องสร้างแฮช SHA1

สร้างค่าแฮช SHA-1 (ยาว 40 ตัวอักษรเฮกซาเดซิมอล) จากข้อความใดๆ เหมาะอย่างยิ่งสำหรับการตรวจสอบค่าเช็คซัมแบบดั้งเดิม รหัสประจำออบเจกต์ของ Git และการตรวจสอบความสมบูรณ์ที่ไม่เกี่ยวข้องกับความปลอดภัย

เครื่องมือนี้มีให้บริการในภาษาอื่น

คู่มือและกรณีการใช้งาน