§

วางข้อความหรือปล่อยไฟล์เพื่อแฮช

การเข้ารหัส
§

ตัวสร้างแฮช — SHA-256, MD5, SHA-1 ออนไลน์

ค่าแฮชทั้งสี่ถูกคำนวณในเครื่องในเบราว์เซอร์ของคุณ ไม่มีการอัปโหลดสิ่งใด
§

MD5

เลิกใช้แล้ว
§

SHA-1

เลิกใช้แล้ว
§

SHA-256

§

SHA-512

วิศวกรไทยใช้แฮชทุกวัน — SHA-256 บนลายเซ็น XAdES ของใบกำกับภาษีอิเล็กทรอนิกส์ ETDA, SHA-256 ของ biometric template ใน NDID/ThaID, Content-MD5 เมื่ออัปไฟล์ S3 บน Bangkok local zone, SHA-1 prefix ของ commit GitLab ที่ DGA ใช้ เครื่องมือใช้ Web Crypto API ในเบราว์เซอร์ ไฟล์ลับไม่ออกจากเครื่อง

แฮชเชิงรหัสคืออะไร?

ฟังก์ชันแฮชเชิงเข้ารหัสลับ รับข้อมูลนำเข้าที่มีความยาวเท่าใดก็ได้ และให้ผลลัพธ์เป็นค่าแฮชที่มีความยาวคงที่ ข้อมูลเดียวกันจะให้ค่าแฮชเดียวกันเสมอ การเปลี่ยนบิตเดียวจะเปลี่ยนผลลัพธ์ประมาณครึ่งหนึ่ง เครื่องมือนี้คำนวณค่าแฮชที่ใช้กันอย่างแพร่หลายที่สุดสี่แบบ — MD5 (RFC 1321), SHA-1, SHA-256 และ SHA-512 (ตระกูล SHA กำหนดโดย FIPS 180-4) — สำหรับข้อความหรือไฟล์ใด ๆ ที่คุณป้อน โดยไม่ส่งข้อมูลออกจากอุปกรณ์ของคุณเลย

ตัวสร้างแฮชนี้ทำงานอย่างไร?

การแฮชทำงานทั้งหมดบนเครื่องของคุณ SHA-1, SHA-256 และ SHA-512 ถูกส่งไปยัง API crypto.subtle.digest ดั้งเดิมของเบราว์เซอร์ ส่วน MD5 ใช้การอิมพลีเมนต์ public-domain ที่มาในตัวเนื่องจาก Web Crypto ไม่มี MD5 ขั้นตอนคือ:

  1. ข้อมูลของคุณถูกอ่านจาก textarea หรือไฟล์ของคุณถูกอ่านจากดิสก์เข้าไปใน ArrayBuffer ข้อความถูกเข้ารหัสเป็น UTF-8 ก่อนแฮช เพื่อให้ค่าแฮชตรงกับที่การเรียก hashlib.sha256(text.encode()) ฝั่งเซิร์ฟเวอร์จะให้
  2. แต่ละอัลกอริทึมจะเติมข้อความให้ถึงขอบเขตของบล็อก แล้วประมวลผลทีละบล็อก ผสมไบต์ของข้อมูลกับสถานะภายในที่กำลังทำงานอยู่ผ่านลำดับของการดำเนินการระดับบิตและเลขคณิตมอดูลาร์
  3. เมื่อบล็อกสุดท้ายถูกประมวลผล สถานะภายในจะถูกสรุป: MD5 ให้ผลลัพธ์ 128 บิต, SHA-1 ให้ 160 บิต, SHA-256 ให้ 256 บิต และ SHA-512 ให้ 512 บิต
  4. ไบต์ค่าแฮชดิบจะถูกจัดรูปแบบเป็นฐานสิบหกตัวพิมพ์เล็กหรือ Base64 มาตรฐาน ขึ้นอยู่กับการเข้ารหัสที่คุณเลือกเหนือแผง
  5. ค่าแฮชแต่ละค่าจะถูกเขียนลงใน textarea แบบอ่านอย่างเดียวของตัวเองพร้อมปุ่ม คัดลอก การเปิดโหมด สด จะแฮชใหม่ทุกครั้งที่กดแป้นพิมพ์ เพื่อให้คุณเห็นเอฟเฟ็กต์หิมะถล่ม (avalanche effect) ได้แบบเรียลไทม์

ฉันควรใช้อัลกอริทึมแฮชใด?

สี่อัลกอริทึมที่มาในเครื่องมือนี้ครอบคลุมตั้งแต่ checksum รุ่นเก่าจนถึงคำแนะนำเชิงเข้ารหัสลับปัจจุบัน เลือกตามงาน ไม่ใช่ตามความคุ้นเคย:

  • MD5 (128 บิต) — เร็วและแพร่หลาย แต่ถูกทำลายเชิงเข้ารหัสลับแล้ว มีการเผยแพร่การชนกัน (collision) ที่ใช้งานได้จริงมาตั้งแต่ปี 2004 ใช้สำหรับ checksum ที่ไม่เกี่ยวกับความปลอดภัยเท่านั้น: คีย์ deduplication, ตัวเลี่ยงแคช, ลายนิ้วมือแบบ ETag และการตรวจสอบความสมบูรณ์ของไฟล์เทียบกับแคตตาล็อกที่เชื่อถือได้
  • SHA-1 (160 บิต) — ก็เลิกใช้สำหรับความปลอดภัยแล้วเช่นกัน การโจมตี SHAttered สาธิตการชน PDF ต่อสาธารณะในปี 2017 ยังพบใน Git object ID รุ่นเก่า, ใบรับรอง TLS รุ่นเก่า และโครงสร้าง HMAC ที่การถูกทำลายของแฮชยังไม่รั่วไหลคีย์ อย่านำมาใช้กับงานใหม่
  • SHA-256 (256 บิต) — ค่าเริ่มต้นสำหรับงานทั่วไปในปัจจุบัน ใช้ในลายนิ้วมือใบรับรอง TLS, แฮชบล็อก Bitcoin, checksum การปล่อยซอฟต์แวร์, ค่าแฮชอิมเมจคอนเทนเนอร์ และไปป์ไลน์การเซ็นโค้ดสมัยใหม่ส่วนใหญ่ เลือกตัวนี้เมื่อสงสัย
  • SHA-512 (512 บิต) — ตระกูล SHA-2 เดียวกับ SHA-256 ที่มีสถานะภายในใหญ่กว่าและขนาดเวิร์ดที่กว้างกว่า 64 บิต มักเร็วกว่า SHA-256 บนซีพียู 64 บิต และเป็นตัวเลือกที่นิยมเมื่อคุณต้องการระยะปลอดภัยจากการชนเพิ่มขึ้น หรือค่าแฮชที่ยาวขึ้นสำหรับคีย์ HMAC

ทำไมจึงใช้ตัวสร้างแฮชนี้?

  • ความเป็นส่วนตัว: ทุกไบต์ของข้อมูลที่ป้อนถูกแฮชในเครื่องในเบราว์เซอร์ของคุณ ไม่มีการอัปโหลดไฟล์ ไม่มีการเดินทางบนเครือข่าย ไม่มีบันทึกของเซิร์ฟเวอร์ ตัวเลือกไฟล์อ่านจากดิสก์โดยตรงผ่าน File API
  • สี่ค่าแฮชในครั้งเดียว: วางครั้งเดียวและอ่าน MD5, SHA-1, SHA-256 และ SHA-512 เคียงข้างกัน สลับการเข้ารหัสผลลัพธ์ระหว่างฐานสิบหกกับ Base64 ได้โดยไม่ต้องแฮชใหม่
  • ผลลัพธ์ตรงมาตรฐาน: ตระกูล SHA ถูกมอบหมายให้ crypto.subtle.digest ซึ่งเป็นการอิมพลีเมนต์ FIPS 180-4 เดียวกับที่ระบบปฏิบัติการของคุณเชื่อถืออยู่แล้ว MD5 ปฏิบัติตาม RFC 1321 ไบต์ต่อไบต์
  • สร้างมาเพื่องานตรวจสอบ: โหมดสดแสดงเอฟเฟ็กต์หิมะถล่มขณะที่คุณพิมพ์ แผงไฟล์รองรับไบนารีขนาดเท่าที่หน่วยความจำของแท็บรองรับ เพื่อให้คุณตรวจสอบไฟล์ release archive ได้โดยไม่ต้องใช้เทอร์มินัล

การใช้งานทั่วไปของฟังก์ชันแฮชมีอะไรบ้าง?

แฮชปรากฏในงานวิศวกรรมประจำวัน:

  • การตรวจสอบการดาวน์โหลด: เปรียบเทียบค่าแฮช SHA-256 ของไฟล์ release archive กับค่าที่เผยแพร่บนเว็บไซต์ของโครงการ เพื่อยืนยันว่าไม่ถูกแก้ไขระหว่างการส่ง
  • การดีบักการรวมระบบ: ทำซ้ำค่า MD5 หรือ SHA-256 ที่บริการพันธมิตรคาดหวังในลายเซ็นคำขอ เพื่อให้คุณค้นหาความผิดพลาดในตัวสร้าง canonical string ของคุณ
  • Content addressing: สร้าง ID แบบกำหนดได้จาก payload เพื่อใช้เป็นคีย์แคช, เครื่องหมาย deduplication หรือตัวระบุอ็อบเจ็กต์แบบ Git

ตัวอย่างแฮชมีลักษณะอย่างไร?

การแฮชสตริง ASCII hello ให้ค่า 5d41402abc4b2a76b9719d911017c592 เป็น MD5, aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d เป็น SHA-1, 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 เป็น SHA-256 และสตริงฐานสิบหก 128 อักขระที่ขึ้นต้นด้วย 9b71d224bd62f3785d96d46ad3ea3d73... เป็น SHA-512 การเพิ่มช่องว่างต่อท้ายเพียงตัวเดียวแล้วแฮชใหม่จะเปลี่ยนค่าแฮชทุกตัวจนจำไม่ได้

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