Bcrypt Generator: คู่มือ Hash และ Verify Password อย่างถูกวิธี
เรียนรู้วิธีใช้ Bcrypt Generator สร้าง password hash ที่ปลอดภัยพร้อมปรับ cost factor ได้ และ verify hash ที่มีอยู่ — ทำงาน client-side ใน browser โดยตรง
Table of Contents
ถ้าคุณกำลังสร้าง application ที่มีระบบสมาชิก password แบบ plain-text ไม่ควรหลุดเข้าไปใน database เด็ดขาด Bcrypt คือหนึ่งใน algorithm สำหรับ password hashing ที่ผ่านการทดสอบมายาวนานที่สุด และเงียบๆ ปกป้องบัญชีผู้ใช้นับพันล้านมาตั้งแต่ปี 1999 Bcrypt Generator บน Online Tools Forge ช่วยให้คุณ generate และ verify bcrypt hash ได้ทันทีใน browser — ไม่ต้องยิง request ไป server ไหนเลย ไม่ต้องติดตั้งอะไร และเป็นศูนย์ความเสี่ยงที่ password จะรั่วไหลไปยังบุคคลที่สาม
ต่างจาก hash function ใช้งานทั่วไปอย่าง MD5 หรือ SHA-256 ที่ออกแบบมาให้เร็ว bcrypt ถูกออกแบบมาเพื่อ password โดยเฉพาะ มันตั้งใจให้ทำงานช้า ใส่ salt ให้ทุก hash อัตโนมัติ และมี cost factor ที่ขยายตาม hardware ที่เร็วขึ้น ในคู่มือนี้ คุณจะได้เรียนรู้ว่าเครื่องมือทำงานอย่างไร string $2b$10$... ที่ดูเข้าใจยากนั้นบรรจุอะไรไว้บ้าง และจะเลือก cost factor อย่างไรให้สมดุลระหว่างความปลอดภัยกับความเร็วในการ login
ทำไมต้องใช้ Bcrypt?
- มี salting ในตัว — ทุก bcrypt hash ฝัง random salt ไว้ข้างใน ทำให้ password เดียวกันให้ hash ที่ต่างกันโดยสิ้นเชิง ตัดปัญหา rainbow table และการโจมตีแบบ precomputation ไปโดยสิ้นเชิง
- Cost factor ปรับได้ — work factor (เลือกได้ 4–15 ในเครื่องมือนี้) ให้คุณปรับความช้าของ hashing ได้ พอ CPU กับ GPU เร็วขึ้นเท่าไหร่ ก็แค่ขยับ cost ขึ้นเพื่อให้แซงหน้า attacker ที่จะ brute-force
- ออกแบบเพื่อ password โดยเฉพาะ — hash ที่เร็วอย่าง MD5 หรือ SHA-256 ถูก optimize ให้ throughput สูง ซึ่งเป็นสิ่งที่ attacker ต้องการเป๊ะๆ ส่วน key setup ของ bcrypt ที่อิง Blowfish ทำให้การเดาแต่ละครั้งแพงโดยการออกแบบ
- ผ่านการพิสูจน์ในระดับโลก — bcrypt ถูกตรวจสอบโดย cryptographer มากว่าสองทศวรรษ และเป็น password hasher เริ่มต้นใน framework ดังๆ อย่าง Laravel, Rails (has_secure_password) และหลาย stack ของ Node.js
- Hash string บรรจุทุกอย่างในตัวเอง — algorithm, cost และ salt อยู่ในตัว hash เลย (เช่น $2b$10$N9qo8u...) การ verify จึงไม่ต้องใช้ metadata เพิ่ม มี string ที่เก็บไว้อย่างเดียวก็พอ
- ประมวลผล client-side 100% — เครื่องมือนี้รัน bcryptjs ใน browser ของคุณ password ไม่เคยออกจากเครื่อง จึงปลอดภัยแม้จะใช้ทดสอบกับ credential จริง
ฟีเจอร์เด่น
| ฟีเจอร์ | ทำอะไร |
|---|---|
| Generate Hash | แปลง password ใดๆ ให้เป็น bcrypt hash เต็มรูปแบบพร้อม cost factor ที่เลือก |
| Verify Password | ตรวจ password กับ hash ที่มีอยู่ในรูปแบบ $2a$/$2b$/$2y$ |
| ตัวเลือก cost factor | เลือก work factor ได้ตั้งแต่ 4 ถึง 15 (ค่าเริ่มต้น 10) |
| รองรับทุก variant | รองรับ hash format $2a$, $2b$ และ $2y$ |
| Copy to clipboard | คัดลอก hash ที่ generate ได้ในคลิกเดียว |
| Client-side ล้วนๆ | รันด้วย bcryptjs ใน browser ทั้งหมด — ไม่มีการ upload อะไรเลย |
- หน้าตาแบบสอง tab สะท้อน workflow จริงในชีวิต: คุณไม่ hash password ใหม่ก่อนเก็บ ก็ verify password ที่เดาเข้ามากับ hash ที่มีอยู่
- ตัวเลือก cost อัปเดตทันที คุณจึงสัมผัสความต่างระหว่าง cost 10 (เร็ว) กับ cost 14 (ช้าอย่างเห็นได้ชัด) ได้ก่อนเอาไปใช้จริงใน production
- การตรวจ format ของ hash ช่วยจับ typo ตั้งแต่เนิ่นๆ — verifier ต้องการ string ที่ขึ้นต้นด้วย $2a$, $2b$ หรือ $2y$
วิธีใช้งาน
- เปิด Bcrypt Generator
- ใน tab Generate Hash พิมพ์ password ที่ต้องการ hash
- เลือก cost factor — เริ่มที่ 10 สำหรับหน้า login ทั่วไป หรือ 12 ขึ้นไปสำหรับบัญชีที่มีค่า
- กด generate แล้วคัดลอก string $2b$... ที่ได้ไปเก็บไว้
- สลับไป tab Verify Password เมื่อไหร่ก็ตามที่ต้องการยืนยันว่า password ตรงกับ hash ที่เก็บไว้ — วาง hash กรอก password ที่จะทดสอบ แล้วดูผลลัพธ์
เจาะลึก Bcrypt
ผ่า string ของ hash ทีละส่วน
bcrypt hash หน้าตาแบบนี้:
$2b$10$N9qo8uLOjkA3BbZGM4gMfep7hVScfFLbrktA7qfnG.xJxSVCoqr1u
แยกส่วนได้ดังนี้:
- $2b$ — ตัวระบุเวอร์ชันของ algorithm
- 10 — cost factor (2^10 = 1,024 รอบของ key expansion)
- 22 ตัวอักษรถัดไป — random salt ที่เข้ารหัสแบบ base64
- 31 ตัวอักษรที่เหลือ — hash ของ password ที่ derive ออกมา
เพราะ salt กับ cost ฝังอยู่ใน string ไปเลย การ verify จึงเป็น self-contained โดยสมบูรณ์ คุณเก็บ string เดียว และนั่นคือทุกอย่างที่ bcrypt ต้องใช้ในภายหลัง
เกณฑ์เวลาของ cost factor
cost factor เป็นเลขชี้กำลัง: เพิ่มขึ้นทีละหนึ่ง เวลาคำนวณจะเป็นสองเท่า บน hardware ทั่วไปในปี 2026 การ hash แบบ single-thread ใช้เวลาประมาณ:
| Cost | จำนวนรอบ | เวลาโดยประมาณต่อ hash |
|---|---|---|
| 10 | 1,024 | ~60–100 ms |
| 12 | 4,096 | ~250–400 ms |
| 14 | 16,384 | ~1–2 วินาที |
cost 10 คือขั้นต่ำที่ยอมรับกันในปัจจุบัน cost 12 เป็นที่นิยมสำหรับ web app ใน production ส่วน 14 ขึ้นไปเหมาะกับ credential ที่คุ้มค่าความปลอดภัยเพิ่ม — โดยต้องจำไว้ว่า user ของคุณต้องรอช่วงเวลานี้ทุกครั้งที่ login
$2a$ กับ $2b$ กับ $2y$ ต่างกันอย่างไร
prefix เหล่านี้บอกถึง revision ของ algorithm ที่แก้บั๊กเชิงประวัติศาสตร์ $2a$ คือสเปกดั้งเดิมจาก OpenBSD, $2b$ แก้ overflow bug ที่พบในบาง implementation ปี 2014 และเป็นสิ่งที่ library ปัจจุบัน generate ออกมา ส่วน $2y$ เป็น marker ของ crypt() ใน PHP ที่พฤติกรรมเหมือน $2a$ ในทางปฏิบัติ ทั้งสามแบบ verify ได้เหมือนกันใน library สมัยใหม่ — เครื่องมือนี้รับได้ทั้งหมด ซึ่งสำคัญมากเวลาคุณ import user database เก่า
แล้วทำไมไม่ใช้ MD5 หรือ SHA-256?
GPU ยุคใหม่คำนวณ MD5 ได้หลายพันล้าน hash ต่อวินาที เปลี่ยน database ที่รั่วไหลให้กลายเป็น dataset ที่ crack ได้ภายในไม่กี่ชั่วโมง ในขณะที่ bcrypt ที่ cost 12 จำกัด hardware ตัวนั้นให้ทำได้แค่หลักพัน guess ต่อวินาทีต่อ core — ห่างกันหลาย order of magnitude ถ้าต้องการ checksum ใช้งานทั่วไป ให้ใช้ hash generator แทน ส่วน bcrypt เก็บไว้เพื่อ password เท่านั้น
Use Cases ในทางปฏิบัติ
ต้นแบบระบบ authentication
ก่อนเขียน backend เต็มรูปแบบ คุณสามารถ generate bcrypt hash สำหรับ seed user ล่วงหน้า แล้ววางเข้าไปใน migration file หรือ fixture ได้เลย จากนั้นใช้ tab verify เพื่อยืนยันว่า credential ที่ seed ไว้ใช้งานได้จริง — ทั้งหมดนี้ไม่ต้องเปิด server แม้แต่ตัวเดียว
Verify hash จาก production database
กำลัง debug รายงาน "password ผิด" อยู่ใช่ไหม คัดลอก hash ที่เก็บไว้ (แบบ read-only, ไม่มี plaintext อ่อนไหวในตัว hash เอง) วางเข้า tab verify พร้อม password ที่ user ยืนยันว่าใช้ แล้วจะเห็นทันทีว่าปัญหาอยู่ที่ hash หรืออยู่ที่ส่วนอื่นของ auth pipeline
ย้ายระบบเก่า
การ import user จาก app PHP หรือ Python เก่ามักแปลว่ามี heap ของ hash $2a$ หรือ $2y$ ตามมา การทดสอบว่า path การ verify ตัวใหม่ของคุณรองรับทั้งสาม variant อย่างถูกต้อง ใช้เครื่องมือนี้แค่สองนาทีก็จบ แทนที่จะต้อง loop แบบ deploy-test-deploy
ใช้เรียนและสอน
ถ้าคุณกำลังศึกษาเรื่อง password security หรือเตรียม workshop ไม่มีอะไรเทียบการดู cost 10 กับ cost 14 hash password เดียวกันด้วยความเร็วที่ต่างกันอย่างเห็นได้ชัด มันเปลี่ยน security concept ที่เป็นนามธรรมให้กลายเป็นสิ่งที่สัมผัสได้จริง
Best Practices
- ห้ามเก็บ password แบบ plain-text เด็ดขาด — hash ตอน register, verify ตอน login ไม่มีเหตุผลที่ชอบธรรมให้รู้ password จริงของ user เลย
- เริ่มที่ cost 12 สำหรับ app ใหม่ — login จะอยู่ภายในครึ่งวินาทีบน server สมัยใหม่ แต่ยังนำหน้า GPU ตัว crack อยู่หลายก้าว และควรทบทวนทุกปี
- ปล่อยให้ bcrypt สร้าง salt เอง — การเขียน salt logic เองเป็นแหล่ง vulnerability คลาสสิก — salt 128-bit อัตโนมัติของ library ดีกว่าของ hand-rolled เสมอ
- ใช้ salt ไม่ซ้ำกันต่อ password — bcrypt ทำให้โดย default ซึ่งเป็นเหตุผลที่ password เหมือนกันสองอัน hash ออกมาต่างกัน
- อย่านำ verification code ไปใช้ร่วมกับ algorithm อื่น — แยก bcrypt ไว้เพื่อ password และใช้เครื่องมือ checksum เฉพาะทางสำหรับ file integrity
- ทดสอบด้วย password ทิ้งได้เท่านั้น — แม้เครื่องมือนี้จะ client-side ล้วนๆ แต่การไม่พิมพ์ production credential ลงใน web tool ใดๆ ก็คือนิสัยที่ดีที่ควรฝึกไว้
เริ่ม Hash อย่างปลอดภัย
Password security เป็นหนึ่งในไม่กี่ด้านที่การทำสิ่งที่ถูกต้องง่ายจริงๆ — ตราบใดที่คุณหยิบ algorithm ที่ถูกตัว Bcrypt Generator มอบ bcrypt hashing และ verification ระดับ production ให้คุณโดยไม่ต้อง setup อะไรเลย รันอยู่บนเครื่องของคุณเองทั้งหมด ลองเล่นกับ cost factor 12 ดู แล้วคุณจะเข้าใจว่าความช้าที่ตั้งใจไว้นั้นแหละคือสิ่งที่ปกป้อง user ของคุณ
เครื่องมือที่เกี่ยวข้อง
- Password Hash Verifier — ตรวจ password กับ hash format ที่หลากหลายกว่า
- Password Strength Checker — ประเมินความแข็งแรงของ password ก่อนนำไป hash
- Hash Generator — MD5, SHA-1, SHA-256 และอื่นๆ สำหรับ checksum และ signature
ขอให้มีความสุขในการ hash!