ToolDeck

เครื่องสร้าง Hash MD5

สร้าง hash MD5 จากข้อความใด ๆ

ข้อความป้อนเข้า

ประมวลผลในเครื่อง · ปลอดภัยในการวางข้อมูลลับ

Hash MD5

Hash MD5 จะแสดงที่นี่…

MD5 Hashing คืออะไร?

MD5 (Message-Digest Algorithm 5) เป็นฟังก์ชัน hash แบบ cryptographic ที่สร้าง digest ขนาดคงที่ 128 บิต (16 bytes) จากอินพุตใด ๆ ไม่ว่าจะมีขนาดเท่าใด เผยแพร่ในปี 1992 โดย Ronald Rivest ในฐานะ RFC 1321 MD5 ถูกออกแบบมาเพื่อเป็นตัวต่อจาก MD4 ที่เร็วกว่า และกลายเป็นหนึ่งในฟังก์ชัน hash ที่ใช้แพร่หลายที่สุดบนอินเทอร์เน็ต อัลกอริทึมประมวลผลอินพุตเป็นบล็อก 512 บิตผ่านสี่รอบ รอบละ 16 การดำเนินการ โดยใช้ฟังก์ชัน nonlinear คนละตัวในแต่ละรอบ เพื่อสร้าง fingerprint เป็นเลขฐานสิบหก 32 ตัวอักษร

ฟังก์ชัน hash เป็นการแปลงทางเดียว: จากอินพุตคุณสามารถคำนวณ hash ได้ทันที แต่จาก hash เพียงอย่างเดียว คุณไม่สามารถกู้คืนอินพุตต้นฉบับได้ แม้แต่การเปลี่ยนแปลงอินพุตเพียงหนึ่งบิตก็จะทำให้ digest แตกต่างออกไปโดยสิ้นเชิง — คุณสมบัตินี้เรียกว่า avalanche effect MD5 แมปพื้นที่อินพุตอันไม่จำกัดไปยังพื้นที่เอาต์พุตขนาดคงที่ 128 บิต ดังนั้น collision (อินพุตสองตัวที่ต่างกันแต่ได้ hash เดียวกัน) มีอยู่ตามหลักคณิตศาสตร์อย่างแน่นอน แต่ฟังก์ชัน hash ที่ปลอดภัยต้องทำให้การค้นหา collision นั้นไม่คุ้มค่าในเชิงการคำนวณ

ตั้งแต่ปี 2004 นักวิจัยได้พิสูจน์การโจมตี collision จริงต่อ MD5 ซึ่งหมายความว่าอัลกอริทึมนี้ไม่ถือว่าปลอดภัยสำหรับลายเซ็นดิจิทัล ใบรับรอง หรือบริบทใด ๆ ที่ต้องการ collision resistance อย่างไรก็ตาม MD5 ยังคงถูกใช้งานอย่างแพร่หลายสำหรับวัตถุประสงค์ที่ไม่ใช่ด้านความปลอดภัย ได้แก่ การตรวจสอบความสมบูรณ์ของไฟล์หลังการดาวน์โหลด การสร้าง cache key การลดข้อมูลซ้ำซ้อน และการสร้าง identifier แบบกำหนดตายตัวจากสตริง สำหรับการใช้งานเหล่านี้ ความเร็วของอัลกอริทึมและการรองรับของไลบรารีที่แพร่หลายทำให้เป็นตัวเลือกที่ปฏิบัติได้จริง ในปี 2008 Marc Stevens และเพื่อนร่วมงานได้เผยแพร่การโจมตี chosen-prefix collision ซึ่งหมายความว่าผู้โจมตีสามารถสร้างเอกสารสองชิ้นที่มี prefix ที่กำหนดเองและได้ digest เดียวกัน เทคนิคนี้ได้รับการพิสูจน์ในงาน Chaos Communication Congress ปี 2008 โดยการสร้างใบรับรอง Certification Authority ปลอม มัลแวร์ Flame ปี 2012 ต่อมาได้ใช้ chosen-prefix collision เพื่อปลอมใบรับรองลายเซ็นโค้ดของ Microsoft ทำให้มัลแวร์ปลอมตัวเป็นแพ็คเกจ Windows Update ที่ถูกต้อง การโจมตีในโลกจริงเหล่านี้ยืนยันว่าอัลกอริทึมนี้ถูกทำลายทาง cryptographic สำหรับการใช้งานที่ต้องพึ่งพาความน่าเชื่อถือ และไม่ควรใช้ในสถานการณ์ที่ผู้โจมตีสามารถมีอิทธิพลต่ออินพุตที่จะถูก hash

ทำไมถึงใช้เครื่องมือสร้าง MD5 นี้?

สร้าง hash MD5 ได้ทันทีโดยไม่ต้องติดตั้งอะไรหรือเขียนโค้ด วาง text แล้วรับ hex digest 32 ตัวอักษรแบบ real-time

Hash ทันที
ผลลัพธ์อัปเดตขณะที่คุณพิมพ์ ไม่ต้องคลิกปุ่ม ไม่ต้องรอ — MD5 digest ปรากฏทีละตัวอักษรขณะที่คุณแก้ไขอินพุต
🔒
ประมวลผลแบบให้ความสำคัญกับความเป็นส่วนตัว
การ hash ทั้งหมดทำงานในเบราว์เซอร์ของคุณด้วย JavaScript ข้อความอินพุตของคุณไม่เคยออกจากอุปกรณ์และไม่เคยถูกส่งไปยังเซิร์ฟเวอร์ใด
📋
คัดลอกด้วยคลิกเดียว
คัดลอก hash ไปยัง clipboard ด้วยคลิกเดียว สลับระหว่างเอาต์พุต hex ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เพื่อให้ตรงกับรูปแบบที่ระบบของคุณต้องการ
🔍
ไม่ต้องสร้างบัญชี
ไม่ต้องสมัคร ไม่ต้องล็อกอิน ไม่มีขีดจำกัดการใช้งาน เปิดหน้าและเริ่ม hash ได้เลย ใช้งานได้กับทุกอุปกรณ์ที่มีเบราว์เซอร์สมัยใหม่

กรณีการใช้งาน MD5

การพัฒนา Frontend
สร้าง hash สำหรับการ cache-busting ของ static asset ต่อ MD5 digest ของเนื้อหาไฟล์เข้ากับ URL ของ CSS และ JavaScript เพื่อให้เบราว์เซอร์ดึงเวอร์ชันอัปเดตเมื่อเนื้อหาเปลี่ยนแปลง
การพัฒนา Backend
สร้าง cache key แบบกำหนดตายตัวจาก query parameter หรือ request body ที่ซับซ้อน hash MD5 สร้าง key ขนาดกะทัดรัดและความยาวคงที่ที่ทำงานได้ดีกับ Redis, Memcached และ CDN cache layer
DevOps และ CI/CD
ตรวจสอบความสมบูรณ์ของไฟล์หลังการถ่ายโอนโดยเปรียบเทียบ MD5 checksum package registry และ artifact repository จำนวนมากเผยแพร่ MD5 digest ควบคู่กับการดาวน์โหลดเพื่อการตรวจสอบอย่างรวดเร็ว
QA และการทดสอบ
เปรียบเทียบ hash MD5 ของ API response, database dump หรือไฟล์ configuration เพื่อตรวจหาการเปลี่ยนแปลงที่ไม่คาดคิดระหว่างการทดสอบ โดยไม่ต้อง diff เนื้อหาทั้งหมด
วิศวกรรมข้อมูล
ลดข้อมูลซ้ำซ้อนใน ETL pipeline โดยคำนวณ hash MD5 ของเนื้อหาแถว แถวสองแถวที่มี hash เดียวกันเป็นตัวเลือกสำหรับการลบซ้ำ ช่วยลดต้นทุนการจัดเก็บและการประมวลผล
การเรียนรู้และการศึกษา
ทดลองกับฟังก์ชัน hash เพื่อทำความเข้าใจการแปลงทางเดียว avalanche effect และเหตุผลที่ collision resistance สำคัญต่อความปลอดภัย MD5 เป็น hash ที่ง่ายและเป็นที่รู้จักกว้างขวางที่สุดในการศึกษา

MD5 เทียบกับอัลกอริทึม Hash อื่น

MD5 เป็นอัลกอริทึม hash ที่เร็วที่สุดและให้ผลลัพธ์สั้นที่สุดในบรรดาอัลกอริทึม hash ทั่วไป แต่มีการรับประกันความปลอดภัยที่อ่อนแอที่สุด ตารางด้านล่างเปรียบเทียบขนาด digest มาตรฐาน และกรณีการใช้งานที่เหมาะสมของแต่ละอัลกอริทึม

อัลกอริทึมขนาด Digestความยาว Hexมาตรฐานเหมาะสำหรับ
MD5128 bits32 hex chars1992 / RFC 1321Checksums, non-security fingerprints
SHA-1160 bits40 hex chars1995 / RFC 3174Legacy git commits (being replaced)
SHA-256256 bits64 hex chars2001 / FIPS 180-4TLS certificates, blockchain, JWTs
SHA-384384 bits96 hex chars2001 / FIPS 180-4Government systems, higher security margin
SHA-512512 bits128 hex chars2001 / FIPS 180-4Digital signatures, HMAC with large keys
SHA-3256 bits64 hex chars2015 / FIPS 202Post-quantum readiness, backup standard
BLAKE3256 bits64 hex chars2020High-performance checksums, Merkle trees

MD5 ทำงานอย่างไร

MD5 ประมวลผลอินพุตผ่านโครงสร้าง Merkle-Damgard: ข้อความถูก pad ให้เป็นทวีคูณของ 512 บิต แบ่งเป็นบล็อก และแต่ละบล็อกผ่านสี่รอบของ 16 การดำเนินการ bitwise ที่ผสมอินพุตกับค่าคงที่ที่มาจาก sine ผลลัพธ์คือ state 128 บิตที่กลายเป็น digest สุดท้าย

แต่ละรอบใช้ฟังก์ชัน auxiliary nonlinear ที่แตกต่างกันกับสามใน 32-bit state word สี่ตัว (A, B, C, D) รอบ 1 ใช้ F(B,C,D) = (B AND C) OR (NOT B AND D) — ตัวเลือกแบบ bitwise conditional รอบ 2 ใช้ G(B,C,D) = (B AND D) OR (C AND NOT D) — ตัวเลือกแบบ complementary รอบ 3 ใช้ H(B,C,D) = B XOR C XOR D — ฟังก์ชัน parity รอบ 4 ใช้ I(B,C,D) = C XOR (B OR NOT D) — ตัวรวมแบบ asymmetric ฟังก์ชันทั้งสี่นี้ทำให้ทุกบิตของอินพุตมีอิทธิพลต่อ output digest สร้าง avalanche effect ที่ทำให้การเปลี่ยนแปลงอินพุตเล็กน้อยทำให้เกิดการเปลี่ยนแปลงที่คาดเดาไม่ได้อย่างมากต่อ hash ที่ได้

Input: "hello world"
MD5: 5eb63bbbe01eeed093cb22bb8f5acdc3
(128 bits = 16 bytes = 32 hex characters)

อัลกอริทึมดำเนินการใน 5 ขั้นตอน: (1) ต่อบิต 1 แล้วเติมศูนย์จนกระทั่งความยาวข้อความเป็น 448 mod 512; (2) ต่อความยาวข้อความต้นฉบับเป็นจำนวนเต็ม little-endian ขนาด 64 บิต; (3) กำหนดค่าเริ่มต้นตัวแปร state 32 บิตสี่ตัว (A, B, C, D) ด้วยค่าคงที่ที่กำหนดไว้; (4) ประมวลผลแต่ละบล็อก 512 บิตผ่าน 64 การดำเนินการโดยใช้ฟังก์ชัน nonlinear สี่ตัว (F, G, H, I) ตัวละหนึ่งรอบ รอบละ 16 การดำเนินการ; (5) บวก state ที่ได้กับ state สะสมและเอาต์พุต hash 128 บิตสุดท้ายตามลำดับ byte แบบ little-endian

ตัวอย่างโค้ด

วิธีสร้าง hash MD5 ในภาษาและสภาพแวดล้อมยอดนิยม หมายเหตุ: MD5 ไม่มีใน browser Web Crypto API — ใช้ไลบรารีหรือ Node.js

JavaScript (Web Crypto — browser & Node.js)
// MD5 is not available in Web Crypto API (it only supports SHA-*)
// Use a library like 'js-md5' or the Node.js crypto module

// Node.js (built-in crypto)
const crypto = require('crypto')
const hash = crypto.createHash('md5').update('hello world').digest('hex')
console.log(hash) // → "5eb63bbbe01eeed093cb22bb8f5acdc3"

// With Unicode input
crypto.createHash('md5').update('cafe\u0301').digest('hex')
// → "4fad076bae205e95bec9dacea498e2ab"
Python
import hashlib

# Basic MD5 hash
result = hashlib.md5(b'hello world').hexdigest()
print(result)  # → "5eb63bbbe01eeed093cb22bb8f5acdc3"

# Hash a string (must encode to bytes first)
text = 'hello world'
hashlib.md5(text.encode('utf-8')).hexdigest()
# → "5eb63bbbe01eeed093cb22bb8f5acdc3"

# Hash a file
with open('file.bin', 'rb') as f:
    md5 = hashlib.md5()
    for chunk in iter(lambda: f.read(8192), b''):
        md5.update(chunk)
    print(md5.hexdigest())
Go
package main

import (
    "crypto/md5"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := md5.Sum(data)
    fmt.Printf("%x\n", hash)
    // → 5eb63bbbe01eeed093cb22bb8f5acdc3
}
CLI (Linux / macOS)
# Using md5sum (Linux) or md5 (macOS)
echo -n "hello world" | md5sum
# → 5eb63bbbe01eeed093cb22bb8f5acdc3  -

# macOS
echo -n "hello world" | md5
# → 5eb63bbbe01eeed093cb22bb8f5acdc3

# Hash a file
md5sum package.json
# → a1b2c3d4e5f6...  package.json

# Using openssl (cross-platform)
echo -n "hello world" | openssl md5
# → MD5(stdin)= 5eb63bbbe01eeed093cb22bb8f5acdc3

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

MD5 ยังปลอดภัยอยู่ไหม?
ไม่ปลอดภัยสำหรับแอปพลิเคชันที่ต้องการความปลอดภัย เช่น ลายเซ็นดิจิทัล ใบรับรอง TLS หรือการ hash รหัสผ่าน การโจมตี collision จริงได้รับการพิสูจน์ตั้งแต่ปี 2004 และการโจมตี chosen-prefix collision ในปัจจุบันสามารถทำได้ภายในไม่กี่วินาทีบนฮาร์ดแวร์ทั่วไป สำหรับการใช้งานที่ไม่ใช่ด้านความปลอดภัย เช่น checksum, cache key, การลดข้อมูลซ้ำซ้อน — อัลกอริทึมยังคงเป็นตัวเลือกที่ปฏิบัติได้จริงและได้รับการรองรับอย่างกว้างขวาง
ความแตกต่างระหว่าง MD5 และ SHA-256 คืออะไร?
อัลกอริทึม MD5 สร้าง digest ขนาด 128 บิต (32 ตัวอักษร hex) และมีความเสี่ยงต่อการโจมตี collision SHA-256 สร้าง digest ขนาด 256 บิต (64 ตัวอักษร hex) และไม่มีการโจมตีจริงที่ทราบ SHA-256 ช้ากว่าอัลกอริทึมเก่าประมาณ 30-40% บนฮาร์ดแวร์เดียวกัน แต่ระดับความปลอดภัยที่สูงกว่าทำให้เป็นตัวเลือกเริ่มต้นสำหรับแอปพลิเคชันที่การตรวจสอบความสมบูรณ์ต้องทนต่อการโจมตีจากผู้ไม่ประสงค์ดี
คุณสามารถย้อนกลับ hash MD5 ไปยังอินพุตต้นฉบับได้ไหม?
ไม่ได้ ฟังก์ชัน hash นี้เป็นทางเดียวโดยการออกแบบ — มันทิ้งข้อมูลระหว่างการ hash อย่างไรก็ตาม สำหรับอินพุตสั้นหรือทั่วไป ผู้โจมตีสามารถใช้ rainbow table (การแมป hash-to-plaintext ที่คำนวณไว้ล่วงหน้า) หรือ brute force เพื่อค้นหาอินพุตต้นฉบับได้ นี่คือเหตุผลที่ไม่ควรใช้สำหรับการจัดเก็บรหัสผ่าน ควรใช้ bcrypt, scrypt หรือ Argon2 แทน
ทำไมเครื่องมือต่าง ๆ บางครั้งถึงให้ hash MD5 ที่แตกต่างกันสำหรับข้อความเดียวกัน?
สาเหตุที่พบบ่อยที่สุดคือความแตกต่างของการ encoding อัลกอริทึมทำงานกับ bytes ไม่ใช่ตัวอักษร สตริง 'hello' ให้ hash ที่ต่างกันเมื่อ encode เป็น UTF-8 เทียบกับ UTF-16 เทียบกับ Latin-1 ปัญหาที่พบบ่อยอีกอย่างคือ newline ที่ท้าย: echo ใน shell ส่วนใหญ่ต่อ newline (\n) เว้นแต่คุณใช้ echo -n ควรตรวจสอบ bytes ที่แน่นอนที่กำลังถูก hash เสมอ
ใช้เวลานานแค่ไหนในการคำนวณ hash MD5?
อัลกอริทึมนี้เร็วมาก บนฮาร์ดแวร์สมัยใหม่ มันประมวลผลข้อมูลที่ 3-6 GB/s บน CPU core เดียว GPU สามารถคำนวณ checksum ได้พันล้านครั้งต่อวินาที ความเร็วนี้เป็นข้อได้เปรียบสำหรับการตรวจสอบไฟล์ แต่เป็นข้อเสียสำหรับการ hash รหัสผ่าน ซึ่งอัลกอริทึมที่ช้ากว่า (bcrypt, Argon2) เป็นที่นิยมโดยเฉพาะเพราะทนต่อการโจมตีแบบ brute-force
MD5 collision คืออะไร และเหตุใดจึงสำคัญ?
collision เกิดขึ้นเมื่ออินพุตสองตัวที่ต่างกันสร้าง hash digest เดียวกัน ในปี 2004 Xiaoyun Wang ได้พิสูจน์ collision จริงครั้งแรกต่อ MD5 ภายในปี 2012 มัลแวร์ Flame ได้ใช้ collision เพื่อปลอมใบรับรองลายเซ็นโค้ดของ Microsoft ปัจจุบัน identical-prefix collision สามารถคำนวณได้ภายในเวลาไม่ถึงหนึ่งนาที ทำให้อัลกอริทึมนี้ไม่เหมาะสำหรับแอปพลิเคชันที่พึ่งพา collision resistance เช่น ลายเซ็นดิจิทัลหรือ certificate pinning
ควรใช้ MD5 หรือ CRC32 สำหรับ file checksum?
checksum นี้เป็นตัวเลือกที่ดีกว่า CRC32 สำหรับการตรวจสอบความสมบูรณ์ของไฟล์ CRC32 เป็นรหัสตรวจจับข้อผิดพลาด 32 บิตที่ออกแบบมาเพื่อตรวจจับการเสียหายโดยบังเอิญในการส่งข้อมูล ไม่ใช่การดัดแปลงโดยเจตนา พื้นที่เอาต์พุตที่เล็กหมายความว่า collision สร้างได้อย่างง่ายดาย ส่วน MD5 ให้ digest 128 บิตที่มีความต้านทาน collision โดยบังเอิญที่แข็งแกร่งกว่ามาก สำหรับสถานการณ์ที่มีผู้โจมตี (การตรวจสอบการดาวน์โหลดจากแหล่งที่ไม่น่าเชื่อถือ) ควรใช้ SHA-256 แทน