ตัวสร้างแฮช MD5

คำนวณไดเจสต์ MD5 ขนาด 128 บิตของข้อความ ไบต์เลขฐานสิบหก หรือไฟล์ ค่าแฮชจะอัปเดตทันทีขณะพิมพ์ และช่อง “เปรียบเทียบกับ” จะบอกว่าค่านั้นตรงกับเช็กซัมที่คุณคาดไว้หรือไม่

อัลกอริทึมทั้งหมด

ทำงานภายในเบราว์เซอร์ของคุณทั้งหมด ไม่มีการอัปโหลดข้อมูลใด ๆ

วิธีใช้งาน

  1. พิมพ์หรือวางข้อความ ตั้ง “รูปแบบอินพุต” เป็น “เลขฐานสิบหก” เพื่อป้อนไบต์ หรือคลิก “เปิดไฟล์” เพื่อแฮชไบต์ของไฟล์ตามจริงทุกไบต์
  2. ตั้ง “การเข้ารหัสอักขระ” เป็น UTF-8 ไว้ เว้นแต่แฮชต้นฉบับสร้างจากข้อความในชุดอักขระอื่น
  3. ที่ “รูปแบบเอาต์พุต” ให้เลือก “hex (ตัวพิมพ์เล็ก)” “HEX (ตัวพิมพ์ใหญ่)” หรือ Base64
  4. หากต้องการตรวจสอบไฟล์ที่ดาวน์โหลด ให้วางค่า MD5 ที่เผยแพร่ไว้ลงในช่อง “เปรียบเทียบกับ” แล้วดูว่าแสดง “ตรงกัน” หรือไม่

MD5 คืออะไร

MD5 (Message-Digest Algorithm 5) ออกแบบโดย Ronald Rivest และเผยแพร่ในปี 1992 เป็น RFC 1321 อัลกอริทึมนี้อ่านอินพุตเป็นบล็อกละ 512 บิตและให้ไดเจสต์ขนาด 128 บิต ซึ่งมักเขียนเป็นเลขฐานสิบหก 32 อักขระหรือ Base64 24 อักขระ อินพุตเดียวกันจะให้ไดเจสต์เดียวกันเสมอ และการเปลี่ยนอินพุตเพียงบิตเดียวจะทำให้บิตของเอาต์พุตเปลี่ยนไปประมาณครึ่งหนึ่ง

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

MD5 ยังปลอดภัยอยู่หรือไม่

ไม่ปลอดภัยเมื่อต้องรับมือกับผู้โจมตี ในปี 2004 Xiaoyun Wang และคณะได้เผยแพร่วิธีสร้างการชนกัน (collision) ที่ทำได้จริง คืออินพุตสองชุดที่ต่างกันแต่ให้ MD5 เดียวกัน จากนั้นการชนกันแบบเลือกส่วนนำหน้า (chosen-prefix) ก็ตามมา นักวิจัยใช้เทคนิคนี้สร้างใบรับรอง CA ปลอมในปี 2008 และในปี 2012 มัลแวร์ Flame ก็ใช้เทคนิคเดียวกันปลอมใบรับรองที่ทำให้โค้ดของมันดูเหมือนได้รับการลงนามโดย Microsoft ปัจจุบันแล็ปท็อปธรรมดาเครื่องหนึ่งหาการชนกันของ MD5 ได้ในไม่กี่วินาที และ RFC 6151 ระบุว่า MD5 ใช้ไม่ได้อีกต่อไปในงานที่ต้องการความทนทานต่อการชนกัน เช่น ลายเซ็นดิจิทัล

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

เลขฐานสิบหก, Base64 และแฮชที่ไม่ตรงกัน

โดยปกติ MD5 จะแสดงเป็นเลขฐานสิบหก ซึ่งเป็นรูปแบบที่ md5sum แสดงผล แต่บางโปรโตคอลจะส่งไบต์ดิบ 16 ไบต์ในรูป Base64 แทน เช่น ส่วนหัว HTTP Content-MD5 ที่ API ของบริการจัดเก็บข้อมูลบนคลาวด์อย่าง Amazon S3 ใช้ ให้เลือกเอาต์พุตเป็น Base64 หรือแปลงค่าที่มีอยู่แล้วด้วย Hex เป็น Base64

หาก MD5 ของคุณต่างจากของเครื่องมืออื่น แปลว่าไบต์ของอินพุตต่างกัน สาเหตุที่พบบ่อยคืออักขระขึ้นบรรทัดใหม่ต่อท้าย การจบบรรทัดแบบ Windows หรือการเข้ารหัสอักขระที่ต่างกัน เช่น "café" มีขนาด 5 ไบต์ใน UTF-8 แต่มีเพียง 4 ไบต์ใน ISO-8859-1 แฮชทั้งสองจึงไม่มีส่วนใดเหมือนกันเลย

$ echo "hello" | md5sum      # แฮช "hello\n"
b1946ac92492d2347c6235b4d2611184  -
$ printf 'hello' | md5sum    # แฮช "hello"
5d41402abc4b2a76b9719d911017c592  -

MD5 ในบรรทัดคำสั่งและในโค้ด

md5sum file.iso                          # Linux
md5 file.iso                             # macOS
certutil -hashfile file.iso MD5          # Windows
Get-FileHash file.iso -Algorithm MD5     # PowerShell

# Python
import hashlib
hashlib.md5('hello'.encode('utf-8')).hexdigest()

// Node.js
require('crypto').createHash('md5').update('hello', 'utf8').digest('hex')

Web Crypto API ที่มีอยู่ในเบราว์เซอร์ไม่รองรับ MD5 หน้านี้จึงคำนวณ MD5 ด้วย JavaScript บนอุปกรณ์ของคุณ โดยไม่มีการอัปโหลดข้อมูลใด ๆ ตาราง “อัลกอริทึมทั้งหมด” ใต้ผลลัพธ์จะแสดง SHA-1, SHA-256, SHA-384, SHA-512, CRC-32 และ CRC-32C ของอินพุตเดียวกัน

ตัวอย่าง

อินพุต (UTF-8)MD5
Hello, World!65a8e27d8879283831b664bd8b7f0ad4
Base64.is2e3c0e8b828164a8db7f62146ca87e14
你好7eca689f0d3389d9dea66ae112e5cfd7

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

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

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

แฮช MD5 ยาวเท่าใด
128 บิต หรือ 16 ไบต์ คือเลขฐานสิบหก 32 อักขระ หรือ Base64 24 อักขระที่ลงท้ายด้วย == สตริงเลขฐานสิบหก 32 อักขระอาจเป็น MD4 หรือแฮช NTLM ก็ได้ เครื่องมือระบุชนิดแฮชจะแสดงรายการอัลกอริทึมที่เป็นไปได้
หาค่า MD5 ของไฟล์ขนาดใหญ่ได้หรือไม่
ได้ คลิก “เปิดไฟล์” แล้วไบต์ของไฟล์จะถูกแฮชในเบราว์เซอร์ของคุณโดยไม่มีการอัปโหลด ข้อจำกัดอยู่ที่หน่วยความจำที่เบราว์เซอร์ใช้ได้ ไฟล์ขนาดหลายกิกะไบต์จึงควรแฮชด้วย md5sum หรือ certutil
ควรจัดเก็บรหัสผ่านเป็น MD5 หรือไม่
ไม่ควร MD5 ถูกออกแบบมาให้ทำงานเร็ว GPU เพียงตัวเดียวจึงลองเดารหัสผ่านได้หลายพันล้านครั้งต่อวินาที ให้จัดเก็บรหัสผ่านด้วย Argon2id, scrypt, bcrypt หรือ PBKDF2 ซึ่งใช้ salt และจงใจให้ทำงานช้า ส่วน ตัวสร้างรหัสผ่าน ช่วยให้คุณได้รหัสผ่านที่แข็งแรงตั้งแต่แรก