ข้ามไปยังเนื้อหาหลัก
FreeOnlineTools Go
ไทย
คำอธิบาย

อัลกอริทึมแฮชอธิบายแล้ว: MD5, SHA-1, SHA-256, SHA-512

โดย FreeOnlineTools Team · อัปเดตเมื่อ 2026-08-28

ตอบด่วน

MD5 และ SHA-1 ถูกทำลายแล้ว ห้ามใช้เพื่อความปลอดภัย SHA-256 เป็นค่าเริ่มต้นปัจจุบันสำหรับ integrity check และ signature SHA-512 เร็วกว่าบน 64-bit CPU ใช้ Hash Generator ของเราเพื่อคำนวณในเบราว์เซอร์

การแนะนำ

ฟังก์ชัน hash ทาง cryptography รับ input ขนาดใดๆ และผลิต digest ขนาดคงที่ที่ deterministic คำนวณเร็ว ย้อนกลับไม่ได้ collision-resistant และ avalanche-sensitive (เปลี่ยน 1 bit เปลี่ยนประมาณครึ่งหนึ่งของ output) MD5 (128-bit), SHA-1 (160-bit), SHA-256 (256-bit) และ SHA-512 (512-bit) เป็นฟังก์ชัน hash ที่พบบ่อย แต่คุณสมบัติความปลอดภัยต่างกันมาก

ทีละขั้นตอน

  1. ทำความเข้าใจคุณสมบัติของฟังก์ชันแฮช

    แฮชการเข้ารหัสที่ดีนั้นถูกกำหนดไว้แล้ว (อินพุตเดียวกันจะให้เอาต์พุตเดียวกันเสมอ) เอาต์พุตที่มีขนาดคงที่ คำนวณได้เร็ว ไม่สามารถย้อนกลับได้ (ความต้านทานก่อนอิมเมจ) ไม่สามารถค้นหาอินพุต 2 ตัวที่มีเอาต์พุตเดียวกันได้ (ความต้านทานการชนกัน) และหิมะถล่ม (การเปลี่ยนแปลงอินพุตเพียงเล็กน้อยจะพลิก ~50% ของบิตเอาท์พุต)

  2. รู้ขนาดย่อย

    MD5 สร้าง 128 บิต (32 อักขระฐานสิบหก) SHA-1 สร้าง 160 บิต (อักขระฐานสิบหก 40 ตัว) SHA-256 สร้าง 256 บิต (64 อักขระฐานสิบหก) SHA-512 สร้าง 512 บิต (อักขระฐานสิบหก 128 ตัว) การย่อยที่นานขึ้นจะช่วยลดโอกาสที่จะเกิดการชนกัน แต่จะเพิ่มขนาดการจัดเก็บ

  3. เรียนรู้ว่าเหตุใด MD5 และ SHA-1 จึงใช้งานไม่ได้

    นักวิจัยพบการโจมตีแบบชนกันในทางปฏิบัติกับ MD5 (2004) และ SHA-1 (2017, การโจมตีแบบ SHAttered) การชนกันทำให้ผู้โจมตีสร้างอินพุตที่แตกต่างกันสองรายการด้วยแฮชเดียวกัน ทำลายลายเซ็นดิจิทัลและผู้ออกใบรับรอง ไม่ควรใช้เพื่อความปลอดภัย

  4. เลือกอัลกอริธึมที่เหมาะสม

    สำหรับการตรวจสอบความสมบูรณ์ของไฟล์ที่ความเร็วมีความสำคัญมากกว่าความปลอดภัย MD5 หรือ SHA-1 ยังคงเป็นเรื่องปกติ สำหรับการใช้งานที่คำนึงถึงความปลอดภัย (รหัสผ่าน ลายเซ็น ใบรับรอง บล็อกเชน) ให้ใช้ SHA-256 หรือ SHA-512 สำหรับการจัดเก็บรหัสผ่าน ให้ใช้ KDF ที่ช้า เช่น bcrypt, scrypt หรือ Argon2 —ไม่เคยดิบ SHA-256

  5. คำนวณและตรวจสอบแฮช

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

ตัวอย่าง

MD5 จาก 'สวัสดี' (128 บิต, 32 ตัวอักษรฐานสิบหก)

ป้อนข้อมูล: hello

เอาท์พุต: 5d41402abc4b2a76b9719d911017c592

SHA-256 จาก 'สวัสดี' (256 บิต, 64 ตัวอักษรฐานสิบหก)

ป้อนข้อมูล: hello

เอาท์พุต: 2cf24dba5fb0d30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

เอฟเฟกต์หิมะถล่ม—เปลี่ยนตัวละครหนึ่งตัว

ป้อนข้อมูล: สวัสดี vs สวัสดี

เอาท์พุต: SHA-256('hello') เริ่มต้น 2cf24dba... ในขณะที่ SHA-256('Hello') เริ่มต้น 185f8db3... —แตกต่างอย่างสิ้นเชิงแม้จะมีการเปลี่ยนแปลงอินพุตหนึ่งบิต

ปัญหาทั่วไป

  • การใช้ MD5 หรือ SHA-1 สำหรับการแฮชรหัสผ่าน: ทั้งสองอย่างรวดเร็วและใช้งานไม่ได้ ทำให้การโจมตีแบบ brute-force และ rainbow table เป็นเรื่องเล็กน้อย ใช้ bcrypt, scrypt หรือ Argon2 แทน
  • การแฮชที่สับสนด้วยการเข้ารหัส: การแฮชเป็นแบบทางเดียวและไม่สามารถย้อนกลับได้ การเข้ารหัสเป็นแบบสองทาง คุณไม่สามารถ 'ถอดรหัส' แฮชได้ คุณสามารถเปรียบเทียบได้เฉพาะแฮชเท่านั้น
  • การเพิกเฉยต่อการโจมตีแบบขยายความยาว: MD5, SHA-1, SHA-256 และ SHA-512 ล้วนเสี่ยงต่อการโจมตีแบบขยายความยาวเมื่อใช้เป็น MAC ใช้ HMAC-SHA256 สำหรับการตรวจสอบสิทธิ์ข้อความ
  • การเปรียบเทียบแฮชกับ == แทนการเปรียบเทียบเวลาคงที่: การรั่วไหลของเวลาช่วยให้ผู้โจมตีกู้คืนแฮชแบบไบต์ต่อไบต์ได้ ใช้การเปรียบเทียบเวลาคงที่ในรหัสความปลอดภัย

เคล็ดลับ

  • ค่าเริ่มต้นเป็น SHA-256 สำหรับระบบใหม่ —รวดเร็ว ได้รับการสนับสนุนอย่างกว้างขวาง และไม่มีการโจมตีแบบชนกันในทางปฏิบัติในปี 2026
  • สำหรับการจัดเก็บรหัสผ่าน ให้ใช้ bcrypt ที่มีปัจจัยการทำงาน 12+ (หรือ Argon2id ที่มีหน่วยความจำ 64MB) — ห้ามใช้ SHA-256 แบบ raw ซึ่งเร็วเกินไปเมื่อเทียบกับ GPU
  • เมื่อตรวจสอบการดาวน์โหลดไฟล์ ให้เปรียบเทียบทั้งชื่ออัลกอริทึมและไดเจสต์ —แฮช SHA-1 จะไม่มีความหมายหากผู้เผยแพร่ตั้งใจเพียง SHA-256
  • ใช้เครื่องมือ File Hash ของเราเพื่อคำนวณ SHA-256 ไฟล์ขนาดใหญ่ในเครื่องโดยไม่ต้องอัปโหลด โดยจะสตรีมไฟล์ผ่าน Web Crypto API

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

คำแนะนำที่เกี่ยวข้อง

อ้างอิง