Security 6 Jul 2026 7 นาทีในการอ่าน

Checksum คืออะไร? อธิบาย MD5, SHA-1, SHA-256

Checksum คือลายนิ้วมือขนาดสั้นที่ช่วยให้คุณตรวจสอบได้ว่าไฟล์ไม่ได้ถูกแก้ไขหรือเสียหาย การเข้าใจว่าควรใช้อัลกอริทึม Hash ตัวไหน — และจุดอ่อนของ MD5 — จะช่วยปกป้องคุณจากข้อผิดพลาดด้านความปลอดภัยทั่วไป

Checksum guide: MD5, SHA-1, SHA-256 hash functions explained

Checksum คืออะไร?

Checksum คือสตริงที่มีความยาวคงที่ซึ่งได้มาจากข้อมูลส่วนหนึ่งโดยการรันผ่าน hash function โดย Checksum ทำหน้าที่เหมือนลายนิ้วมือ: หากมีแม้แต่บิตเดียวของข้อมูลเดิมเปลี่ยนไป Checksum จะเปลี่ยนไปอย่างสิ้นเชิง สิ่งนี้ทำให้ Checksum มีประโยชน์สำหรับสองอย่าง:

  • การตรวจสอบความถูกต้อง (Integrity verification) — ไฟล์นี้มาถึงโดยไม่เสียหายหรือถูกแก้ไขหรือไม่?
  • เอกลักษณ์ (Identity) — ไฟล์นี้ (หรือข้อมูลส่วนนี้) เป็นไฟล์เดียวกันกับอีกสำเนาหนึ่งหรือไม่?

เมื่อคุณดาวน์โหลดซอฟต์แวร์จากไซต์อย่างเป็นทางการ หน้าดาวน์โหลดมักจะแสดง hash แบบ MD5 หรือ SHA-256 หลังจากดาวน์โหลด คุณสามารถคำนวณ hash ของไฟล์ในเครื่องของคุณและนำมาเปรียบเทียบ หากตรงกัน แสดงว่าไฟล์นั้นสมบูรณ์

หลักการทำงานของ Hash Function

Cryptographic hash function จะรับข้อมูลในความยาวใดก็ได้และส่งออกเป็น digest ที่มีความยาวคงที่ คุณสมบัติสี่ประการที่กำหนดให้เป็น Hash function ที่ดีคือ:

  • Deterministic — อินพุตเดิมจะให้เอาต์พุตเดิมเสมอ
  • One-way — คุณไม่สามารถย้อนกลับจาก hash ไปหาอินพุตเดิมได้ (ภายในระยะเวลาที่เหมาะสม)
  • Avalanche effect — การเปลี่ยนตัวอักษรเพียงตัวเดียวในอินพุตจะทำให้บิตของเอาต์พุตเปลี่ยนแปลงไปประมาณครึ่งหนึ่ง
  • Collision-resistant — ควรจะเป็นไปไม่ได้ทางคำนวณที่จะหาอินพุตที่ต่างกันสองชุดที่ให้ hash เดียวกัน
ตัวอย่าง — SHA-256 avalanche effect:
SHA-256("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
SHA-256("Hello") = 185f8db32921bd46d35e3a1a4e9a9b9c6a7e6a7d2d2c4e9d... (ต่างกันโดยสิ้นเชิง)

MD5 — รวดเร็ว, คุ้นเคย และไม่ปลอดภัยสำหรับการรักษาความปลอดภัย

MD5 (Message Digest Algorithm 5) ให้ผลลัพธ์เป็น digest ขนาด 128 บิต (Hex 32 ตัวอักษร) มันถูกออกแบบขึ้นในปี 1991 และกลายเป็นอัลกอริทึม Checksum มาตรฐานบนอินเทอร์เน็ตมาประมาณสองทศวรรษ

จุดที่ MD5 ยังยอมรับได้:

  • การตรวจสอบความถูกต้องที่ไม่เกี่ยวข้องกับความปลอดภัย — การตรวจสอบว่าการส่งไฟล์ขนาดใหญ่ไม่เสียหายระหว่างทาง
  • Deduplication — การตรวจสอบว่าสองไฟล์เหมือนกันหรือไม่ (เพื่อเป็นการตรวจสอบเบื้องต้นอย่างรวดเร็วก่อนจะเปรียบเทียบทีละไบต์)
  • Cache keys และ ETags ที่ไม่มีความกังวลเรื่องการโจมตีแบบ collision

จุดที่ MD5 ไม่สามารถยอมรับได้:

  • การเก็บรหัสผ่าน — MD5 นั้นเร็วมาก ซึ่งทำให้การโจมตีแบบ brute-force ผ่าน GPU ทำได้ง่ายมาก สามารถคำนวณ MD5 hashes ได้หลายพันล้านครั้งต่อวินาทีด้วยฮาร์ดแวร์สำหรับผู้บริโภคทั่วไป
  • Digital signatures — มีการสาธิตการโจมตีแบบ collision ของ MD5 ในทางปฏิบัติแล้ว โดยสามารถสร้างไฟล์ที่ต่างกันสองไฟล์ให้มี MD5 hash เดียวกันได้
  • Certificate fingerprints — ปัญหาเรื่อง collision เดียวกันนี้ถูกนำมาใช้ด้วย
การใช้ MD5 สำหรับรหัสผ่านถือเป็นช่องโหว่ที่ร้ายแรง หากคุณพบ md5($password) ในโค้ดเก่า ให้เปลี่ยนเป็น password_hash() ใน PHP หรือ bcrypt/Argon2 ในภาษาอื่นๆ MD5 ไม่ใช่อัลกอริทึมสำหรับการ Hash รหัสผ่าน — มันไม่เคยถูกออกแบบมาให้ช้า และความช้าคือสิ่งที่ทำให้การ Hash รหัสผ่านปลอดภัย

SHA-1 — เลิกใช้งานแล้ว (Deprecated)

SHA-1 ให้ผลลัพธ์เป็น digest ขนาด 160 บิต (Hex 40 ตัวอักษร) มันมาแทนที่ MD5 ในฐานะอัลกอริทึมที่แนะนำในช่วงปลายทศวรรษ 1990 และถูกใช้อย่างแพร่หลายใน SSL/TLS certificates, ระบบควบคุมเวอร์ชัน และการตรวจสอบความถูกต้องของไฟล์

ในปี 2017 ทีม Project Zero ของ Google ได้สาธิตการโจมตี SHA-1 collision ครั้งแรกที่ใช้งานได้จริง (การโจมตี "SHAttered") ซึ่งต้องใช้กำลังการประมวลผลเทียบเท่ากับ CPU ประมาณ 6,500 ปี เบราว์เซอร์หลักและหน่วยงานออกใบรับรอง (Certificate Authorities) เลิกยอมรับใบรับรอง SHA-1 ในปี 2017 โดย Git ยังคงใชั SHA-1 ภายในสำหรับ commit hashes แต่กำลังอยู่ในกระบวนการย้ายไปใช้ SHA-256 เป็นทางเลือกเสริม

สำหรับการใช้งานใหม่ อย่าใช้ SHA-1 ให้ใช้ SHA-256 หรือ SHA-512 แทน

SHA-256 — มาตรฐานในปัจจุบัน

SHA-256 เป็นส่วนหนึ่งของตระกูล SHA-2 ที่ออกแบบโดย NSA และประกาศเผยแพร่ในปี 2001 ให้ผลลัพธ์เป็น digest ขนาด 256 บิต (Hex 64 ตัวอักษร) จนถึงปัจจุบัน ยังไม่มีการโจมตีแบบ collision ที่ใช้งานได้จริงสำหรับ SHA-256

ใช้ SHA-256 สำหรับ:

  • การตรวจสอบความถูกต้องของไฟล์ (การดาวน์โหลดซอฟต์แวร์, การสำรองข้อมูล)
  • Digital signatures (TLS certificates, การลงนามรหัส)
  • HMAC-based authentication tokens (HMAC-SHA256)
  • Blockchain และสกุลเงินดิจิทัล (Bitcoin ใช้ double SHA-256)
  • Git commit hashes ในโหมด SHA-256
  • JWT (JSON Web Token) signatures เมื่อใช้ HS256 หรือ RS256

SHA-256 เป็นค่าเริ่มต้นที่เหมาะสมสำหรับเกือบทุกแอปพลิเคชันที่ต้องการ Secure hash หากไม่แน่ใจ ให้ใช้ SHA-256

SHA-512 — เมื่อคุณต้องการมากกว่าเดิม

SHA-512 ให้ผลลัพธ์เป็น digest ขนาด 512 บิต (Hex 128 ตัวอักษร) เป็นส่วนหนึ่งของตระกูล SHA-2 เดียวกันและมีความปลอดภัยเท่ากัน ความแตกต่างในทางปฏิบัติหลักคือ:

  • บนโปรเซสเซอร์ 64 บิต, SHA-512 อาจจะ เร็วกว่า SHA-256 เพราะอัลกอริทึมถูกปรับแต่งมาเพื่อขนาดคำแบบ 64 บิต
  • บนระบบและฮาร์ดแวร์ 32 บิต, SHA-256 จะเร็วกว่า
  • SHA-512 มีผลลัพธ์ที่ใหญ่กว่า ซึ่งหมายถึงการจัดเก็บและการส่งข้อมูลที่ยาวขึ้น

ใช้ SHA-512 เมื่อแอปพลิเคชันต้องการ digest ที่ใหญ่กว่า หรือเมื่อคุณใช้งานบนฮาร์ดแวร์ที่ SHA-512 มีความได้เปรียบด้านประสิทธิภาพ สำหรับเว็บแอปพลิเคชันส่วนใหญ่ SHA-256 ก็เพียงพอแล้ว

หมายเหตุเกี่ยวกับการ Hash รหัสผ่าน

ไม่ควรใช้อัลกอริทึมใดๆ ด้านบนสำหรับการเก็บรหัสผ่านโดยตรง MD5, SHA-1, SHA-256 และ SHA-512 ถูกออกแบบมาให้ เร็ว และความเร็วคือสิ่งที่ผิดสำหรับรหัสผ่าน

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

  • bcrypt — เป็นมาตรฐานมานานกว่า 20 ปี รองรับในแทบทุกภาษา
  • Argon2 (โดยเฉพาะ Argon2id) — ผู้ชนะการแข่งขัน Password Hashing Competition (2015) แนะนำสำหรับแอปพลิเคชันใหม่
  • scrypt — แบบ memory-hard เป็นอีกหนึ่งตัวเลือกที่แข็งแกร่ง

ใน PHP: password_hash($password, PASSWORD_ARGON2ID) ใน Node.js: ใช้แพ็กเกจ bcryptjs หรือ <argon2> ซึ่งจะจัดการการสร้าง salt และการปรับแต่ง work factor ให้โดยอัตโนมัติ

วิธีตรวจสอบ File Checksum

เมื่อคุณดาวน์โหลดซอฟต์แวร์และเว็บไซต์ให้ค่า SHA-256 hash มา:

บน macOS / Linux:
shasum -a 256 downloaded-file.zip
# เปรียบเทียบผลลัพธ์กับ hash อย่างเป็นทางการ
บน Windows (PowerShell):
Get-FileHash downloaded-file.zip -Algorithm SHA256

นอกจากนี้ คุณสามารถใช้ Hash Generator ของเราเพื่อวางเนื้อหาไฟล์หรือข้อความ และคำนวณค่า MD5, SHA-1, SHA-256 หรือ SHA-512 ได้โดยตรงในเบราว์เซอร์ของคุณ — ไม่มีข้อมูลใดถูกส่งไปยังเซิร์ฟเวอร์

สร้าง MD5, SHA-256 และอื่นๆ

คำนวณ Hash ใดก็ได้ (MD5, SHA-1, SHA-256, SHA-512) จากข้อความหรือเนื้อหาไฟล์ในเบราว์เซอร์ของคุณ — ไม่ต้องอัปโหลด, ไม่มีเซิร์ฟเวอร์