เครื่องสร้างและตรวจสอบ Bcrypt Hash
สร้าง bcrypt password hash พร้อมการตั้งค่า cost factor ที่ปรับแต่งได้ (รอบที่ 4-15) และตรวจสอบว่ารหัสผ่านแบบข้อความปกติตรงกับ bcrypt hash ที่มีอยู่หรือไม่ รวมถึงการแสดงโครงสร้างของ hash แบบละเอียด, มาตรวัดความปลอดภัยแบบเรียลไทม์, การประมาณค่าความเร็วเทียบกับค่าใช้จ่าย และคำอธิบายความแตกต่างของแต่ละเวอร์ชัน ($2a$, $2b$, $2y$)
ตัวบล็อกโฆษณาของคุณทำให้เราไม่สามารถแสดงโฆษณาได้
MiniWebtool ให้ใช้งานฟรีเพราะมีโฆษณา หากเครื่องมือนี้ช่วยคุณได้ โปรดสนับสนุนเราด้วย Premium (ไม่มีโฆษณา + เร็วขึ้น) หรืออนุญาต MiniWebtool.com แล้วรีโหลดหน้าเว็บ
- หรืออัปเกรดเป็น Premium (ไม่มีโฆษณา)
- อนุญาตโฆษณาสำหรับ MiniWebtool.com แล้วรีโหลด
เกี่ยวกับ เครื่องสร้างและตรวจสอบ Bcrypt Hash
ยินดีต้อนรับสู่ เครื่องสร้างและตรวจสอบ Bcrypt Hash — เครื่องมือออนไลน์ฟรีที่ช่วยให้คุณสร้าง bcrypt password hash ที่มีความปลอดภัยทางวิทยาการเข้ารหัส พร้อมกำหนดค่า cost factor ได้เอง และตรวจสอบว่ารหัสผ่านแบบข้อความธรรมดาตรงกับ bcrypt hash ที่มีอยู่หรือไม่ ไม่ว่าคุณจะกำลังเตรียมข้อมูลลงฐานข้อมูล, แก้ไขบั๊กขั้นตอนการเข้าสู่ระบบ, ย้ายข้อมูลผู้ใช้ระหว่างระบบ หรือกำลังเรียนรู้เกี่ยวกับ adaptive password hashing เครื่องมือนี้จะให้ผลลัพธ์ทันทีพร้อมการแยกส่วนประกอบของรูปแบบ hash ความยาว 60 ตัวอักษรของ bcrypt เพื่อการเรียนรู้
Bcrypt คืออะไรและทำไมต้องใช้?
Bcrypt เป็นฟังก์ชันแฮชรหัสผ่านแบบปรับตัวได้ซึ่งอิงตามรหัส Blowfish ออกแบบในปี 1999 โดย Niels Provos และ David Mazières ต่างจากแฮชเข้ารหัสที่ทำงานเร็วอย่าง SHA-256 หรือ MD5 เพราะ bcrypt ถูกออกแบบมาให้ทำงานช้าโดยเจตนาและมี cost factor ที่ปรับแต่งได้เพื่อเพิ่มภาระการทำงานเมื่อฮาร์ดแวร์มีประสิทธิภาพสูงขึ้น ทุกๆ bcrypt hash ยังรวมเอา salt แบบสุ่มที่ไม่ซ้ำกัน ซึ่งช่วยป้องกันผู้โจมตีจากการใช้ตาราง rainbow table ที่คำนวณไว้ล่วงหน้า OWASP แนะนำให้ใช้ bcrypt เป็นหนึ่งในสี่อัลกอริทึมการแฮชรหัสผ่านที่ยอมรับได้สำหรับการจัดเก็บข้อมูลรับรองผู้ใช้ในเว็บแอปพลิเคชันสมัยใหม่
Cost Factor: หัวใจของความปลอดภัยใน Bcrypt
ค่า cost factor (หรือเรียกว่า work factor หรือ รอบ) ควบคุมความยากในการคำนวณของ hash เป็นค่าแบบลอการิทึม: ทุกๆ +1 จะเพิ่มงานเป็นสองเท่า ค่า cost ที่ 12 ใช้เวลาประมาณ 250 มิลลิวินาทีบน CPU สมัยใหม่ทั่วไป ส่วนค่า cost 14 จะใช้เวลาประมาณ 1 วินาที ตารางด้านล่างแสดงเวลาการคำนวณโดยประมาณสำหรับแต่ละระดับค่า cost — ควรเลือกค่าที่เร็วพอสำหรับการเข้าสู่ระบบ แต่ช้าพอที่จะสกัดกั้นผู้โจมตี
| ค่า Cost | รอบการทำงาน | เวลาโดยประมาณ | ความปลอดภัย | แนะนำสำหรับ |
|---|---|---|---|---|
| 4 | 2^4 |
< 1 ms | สำหรับการทดสอบเท่านั้น — ห้ามใช้ในระบบจริง | |
| 5 | 2^5 |
2 ms | สำหรับการทดสอบเท่านั้น — ห้ามใช้ในระบบจริง | |
| 6 | 2^6 |
4 ms | สำหรับการทดสอบเท่านั้น — ห้ามใช้ในระบบจริง | |
| 7 | 2^7 |
8 ms | สำหรับการทดสอบเท่านั้น — ห้ามใช้ในระบบจริง | |
| 8 | 2^8 |
16 ms | ระบบรุ่นเก่า | |
| 9 | 2^9 |
31 ms | ระบบรุ่นเก่า | |
| 10 | 2^10 |
62 ms | ขั้นต่ำสำหรับระบบจริง | |
| 11 | 2^11 |
125 ms | ขั้นต่ำสำหรับระบบจริง | |
| 12 | 2^12 |
250 ms | ค่าเริ่มต้นที่แนะนำ | |
| 13 | 2^13 |
500 ms | แอปพลิเคชันความปลอดภัยสูง | |
| 14 | 2^14 |
1.00 วินาที | ความปลอดภัยสูงสุด | |
| 15 | 2^15 |
2.00 วินาที | ความปลอดภัยสูงสุด |
การแยกโครงสร้าง Bcrypt Hash
Bcrypt hash ทุกตัวจะมีความยาว 60 ตัวอักษรพอดีและมีโครงสร้างคงที่ การเข้าใจในแต่ละส่วนจะช่วยให้ตรวจสอบปัญหาการเข้าสู่ระบบหรือการย้าย hash ระหว่างระบบได้ง่ายขึ้นมาก:
$2b$ → ตัวแปรอัลกอริทึม (variant)$12$ → cost factor (2^12 = 4096 รอบ)7i..qTPY7p4ZLvKIepRKwe → salt แบบ base64 ความยาว 22 ตัวอักษรlX0JB55DviohJT.JYruzy4EN6cl.q8O → digest ที่แฮชแล้วความยาว 31 ตัวอักษร
การเข้ารหัส Salt และ Digest
Bcrypt ใช้ชุดตัวอักษร base64 แบบพิเศษที่คล้ายกับมาตรฐาน แต่ใช้ ./ แทน +/ และไม่ใช้การเติม (padding) ซึ่งเป็นเรื่องทางประวัติศาสตร์ของอัลกอริทึมและไม่ส่งผลต่อความปลอดภัย ส่วน salt มีขนาด 16 ไบต์แบบสุ่ม เข้ารหัสเป็น base64 จำนวน 22 ตัวอักษร และ digest มีขนาด 23 ไบต์ เข้ารหัสเป็น 31 ตัวอักษร
อธิบายตัวแปร (Variants) ของ Bcrypt
คุณอาจพบคำนำหน้า bcrypt หลายรูปแบบในระบบต่างๆ ซึ่งทั้งหมดสร้าง hash ที่มีโครงสร้างเดียวกัน แต่มีที่มาต่างกัน:
วิธีใช้งานเครื่องมือนี้
- เลือกโหมด: เลือก สร้าง Hash เพื่อสร้าง bcrypt hash ใหม่ หรือ ตรวจสอบ Hash เพื่อเช็คว่ารหัสผ่านตรงกับ hash ที่มีอยู่หรือไม่
- ป้อนรหัสผ่าน: พิมพ์รหัสผ่านแบบข้อความธรรมดาลงในช่อง ตัววัดไบต์จะเตือนคุณหากรหัสผ่านเข้าใกล้ขีดจำกัด 72 ไบต์ของ bcrypt
- ตั้งค่า cost factor: ในโหมดสร้าง ให้เลื่อนแถบเพื่อเลือก cost factor ระหว่าง 4 ถึง 15 เวลาคำนวณและระดับความปลอดภัยจะอัปเดตแบบเรียลไทม์
- วาง hash ที่ต้องการตรวจสอบ: ในโหมดตรวจสอบ ให้วาง bcrypt hash ความยาว 60 ตัวอักษรที่ขึ้นต้นด้วย
$2a$,$2b$,$2x$หรือ$2y$ - รันและอ่านผลลัพธ์: คลิกปุ่มดำเนินการ โหมดสร้างจะคืนค่า hash พร้อมการแยกโครงสร้างด้วยสี โหมดตรวจสอบจะแสดงตัวบ่งชี้ "ตรงกัน" หรือ "ไม่ตรงกัน" ขนาดใหญ่พร้อมค่า cost factor เดิม
ขีดจำกัดรหัสผ่าน 72 ไบต์
Bcrypt ถูกสร้างขึ้นบนขั้นตอน key-setup ของ Blowfish ซึ่งรับข้อมูลเพียง 72 ไบต์แรกของรหัสผ่านเท่านั้น รหัสผ่านที่ยาวเกิน 72 ไบต์จะถูกตัดทิ้งเงียบๆ โดยไลบรารีรุ่นเก่าหรือถูกปฏิเสธโดยไลบรารีรุ่นใหม่ โปรดทราบว่าเรานับที่ ไบต์ ไม่ใช่จำนวนตัวอักษร — อีโมจิหนึ่งตัวมีขนาด 4 ไบต์ และอักษรที่ไม่ใช่ ASCII ส่วนใหญ่จะใช้ 2-4 ไบต์ในรูปแบบ UTF-8 หากแอปพลิเคชันของคุณต้องการรองรับรหัสผ่านที่ยาวไม่จำกัด วิธีแก้มาตรฐานคือทำ pre-hash รหัสผ่านด้วย SHA-256 และเข้ารหัส digest แบบ base64 ก่อนส่งไปยัง bcrypt ซึ่งจะทำให้ได้ข้อมูลนำเข้าคงที่ที่ 44 ไบต์ซึ่งอยู่ภายในขีดจำกัดพอดี
เมื่อใดควรเลือก Bcrypt เทียบกับ Argon2 หรือ Scrypt
คำแนะนำการแฮชรหัสผ่านสมัยใหม่จาก OWASP และ IETF (RFC 9106) ระบุอัลกอริทึมที่ยอมรับได้ 4 แบบ: Argon2id (แนะนำสำหรับแอปพลิเคชันใหม่), bcrypt, scrypt และ PBKDF2 ควรเลือก bcrypt เมื่อ:
- คุณต้องการความเข้ากันได้ที่กว้างขวาง — ทุกภาษาหลักมีไลบรารี bcrypt ที่สมบูรณ์
- คุณกำลังทำงานกับระบบเดิมที่ใช้ bcrypt อยู่แล้ว
- คุณต้องการอัลกอริทึมที่ผ่านการพิสูจน์มาแล้วกว่า 25 ปีในด้านการวิเคราะห์รหัส
- การทำ hashing แบบใช้หน่วยความจำสูง (Argon2id, scrypt) ไม่เหมาะสมกับสภาพแวดล้อมของคุณ
เลือก Argon2id หากคุณกำลังสร้างระบบใหม่โดยไม่มีข้อจำกัดด้านความเข้ากันได้ — เพราะมันเป็นผู้ชนะในการแข่งขัน Password Hashing Competition และมีความสามารถในการต้านทานการโจมตีด้วย GPU และ FPGA ที่ bcrypt ทำไม่ได้
กรณีการใช้งานจริง
สำหรับนักพัฒนา
- เตรียมข้อมูลตัวอย่าง (seed) ลงฐานข้อมูลด้วยผู้ใช้ทดสอบที่สมจริงโดยไม่ต้องรันขั้นตอนการลงทะเบียนทั้งหมด
- สร้างข้อมูล fixture สำหรับการทดสอบ integration test ในส่วนการเข้าสู่ระบบ
- แก้ไขปัญหาการเข้าสู่ระบบไม่ได้ โดยการตรวจสอบ hash จากระบบจริงเทียบกับรหัสผ่านที่ผู้ใช้แจ้ง
- ย้าย hash แบบ
$2a$เดิมไปเป็น$2b$โดยการแฮชใหม่เมื่อผู้ใช้เข้าสู่ระบบครั้งถัดไป - ปรับจูนค่า cost factor สำหรับระบบจริงโดยวัดจากเวลาคำนวณจริง
สำหรับวิศวกรความปลอดภัย
- ตรวจสอบว่าบริการยืนยันตัวตนภายนอกสร้าง hash ด้วยค่า cost factor ตามที่กล่าวอ้างหรือไม่
- ตรวจสอบการจัดเก็บรหัสผ่านโดยการตรวจสอบตัวแปร hash และค่า cost จากตัวอย่างในระบบจริง
- สร้างสื่อการสอนที่แสดงให้เห็นว่าโครงสร้างของ bcrypt ช่วยต้านทาน rainbow table ได้อย่างไร
สำหรับผู้เรียน
- สร้างรหัสผ่านเดิมสองครั้งเพื่อให้เห็นว่า salt ทำให้ได้ hash ที่ต่างกันอย่างไร
- ทดลองกับค่า cost factor ต่างๆ เพื่อสัมผัสถึงผลกระทบของการเพิ่มภาระงานเป็นเท่าตัวด้วยตัวเอง
- ตรวจสอบ hash ที่ทราบค่าอยู่แล้วเพื่อทำความเข้าใจว่า bcrypt ดึงค่า cost และ salt ออกมาก่อนทำการแฮชรหัสผ่านที่ป้อนเข้ามาได้อย่างไร
คำถามที่พบบ่อย
ฉันควรใช้ cost factor เท่าใดสำหรับ bcrypt?
ปัจจุบัน OWASP แนะนำให้ใช้ cost factor อย่างน้อย 10 โดย 12 เป็นค่าเริ่มต้นที่ดีสำหรับยุคปัจจุบัน ซึ่งใช้เวลาประมาณ 250 มิลลิวินาทีบนเซิร์ฟเวอร์ทั่วไป ค่า cost เป็นแบบลอการิทึม ดังนั้นทุกๆ +1 จะเพิ่มงานเป็นสองเท่า ค่า 14 เหมาะสำหรับแอปพลิเคชันที่มีความปลอดภัยสูง ในขณะที่ 15 เป็นค่าสูงสุดในทางปฏิบัติสำหรับการเข้าสู่ระบบ ห้ามใช้ค่าต่ำกว่า 10 ในระบบใช้งานจริง
ความแตกต่างระหว่าง $2a$, $2b$, $2x$ และ $2y$ คืออะไร?
ทั้งสี่เป็นตัวแปรของ bcrypt ที่แยกตามคำนำหน้า $2a$ เป็นเวอร์ชันดั้งเดิม $2x$ และ $2y$ เป็นการแก้ไขฉุกเฉินของ PHP สำหรับข้อผิดพลาด sign-extension ที่พบในปี 2011 ส่วน $2b$ เป็นการปรับปรุงอ้างอิงสมัยใหม่ที่แก้ไขข้อผิดพลาด wraparound ในรหัสผ่านที่ยาวมาก Hash ที่สร้างจากทุกตัวแปรยังคงสามารถตรวจสอบได้ ไลบรารีสมัยใหม่มักสร้าง $2b$ เป็นค่าเริ่มต้นและคุณควรเลือกใช้สำหรับการสร้าง hash ใหม่
รหัสผ่านที่ฉันป้อนจะถูกส่งไปยังเซิร์ฟเวอร์หรือไม่?
แบบฟอร์มจะถูกประมวลผลฝั่งเซิร์ฟเวอร์ผ่าน HTTPS เพื่อทำการคำนวณ bcrypt แต่ทั้งรหัสผ่านและ hash ที่ได้จะไม่ถูกบันทึกหรือจัดเก็บไว้ แต่ละคำขอจะถูกประมวลผลแล้วทิ้งไป เพื่อความปลอดภัยสูงสุดสำหรับรหัสผ่านทดสอบ อย่าคัดลอกรหัสผ่านจริงที่ใช้งานอยู่มาวางในเครื่องมือออนไลน์ใดๆ ควรใช้เครื่องมือนี้กับรหัสผ่านทดสอบหรือในสภาพแวดล้อมการพัฒนาในเครื่องเท่านั้น
ทำไม bcrypt ถึงมีขีดจำกัดรหัสผ่านที่ 72 ไบต์?
Bcrypt ถูกสร้างขึ้นบนขั้นตอน key-setup ของ Blowfish ซึ่งจะรับข้อมูลเพียง 72 ไบต์แรกเท่านั้น รหัสผ่านที่ยาวกว่า 72 ไบต์จะถูกตัดทิ้งเงียบๆ โดยไลบรารีรุ่นเก่าหรือถูกปฏิเสธโดยไลบรารีรุ่นใหม่ หากต้องการรองรับรหัสผ่านที่ยาวไม่จำกัด ให้ทำ pre-hash ด้วย SHA-256 และเข้ารหัส digest แบบ base64 ก่อนส่งไปยัง bcrypt เครื่องมือนี้จะแจ้งเตือนเมื่อรหัสผ่านของคุณเกินขีดจำกัด
ฉันสามารถตรวจสอบ hash ที่สร้างโดยไลบรารี bcrypt อื่นได้หรือไม่?
ได้ ไลบรารี bcrypt ทั้งหมดใช้รูปแบบเดียวกัน ($variant$cost$salt+digest รวม 60 ตัวอักษร) และสร้าง hash ที่ใช้งานร่วมกันได้ Hash ที่สร้างโดย Node.js bcrypt, PHP password_hash, Python passlib, Spring Security หรือไลบรารีที่ได้มาตรฐานใดๆ จะสามารถตรวจสอบที่นี่ได้อย่างถูกต้อง ตราบใดที่ระบบจำคำนำหน้าตัวแปรได้
ทำไมการสร้างรหัสผ่านเดิมสองครั้งถึงให้ hash ที่ต่างกัน?
Bcrypt จะสร้าง salt แบบสุ่มขนาด 16 ไบต์ขึ้นมาใหม่โดยอัตโนมัติสำหรับทุก hash โดย salt นี้จะถูกผสมเข้าไปในอัลกอริทึมและฝังอยู่ในผลลัพธ์ ดังนั้น hash สองตัวของรหัสผ่านเดียวกันจึงแทบไม่มีทางเหมือนกันเลย การตรวจสอบทำงานได้เพราะฟังก์ชัน checkpw จะดึงค่า cost และ salt ออกจาก hash ที่บันทึกไว้ แล้วรัน bcrypt ใหม่ด้วยพารามิเตอร์เหล่านั้นก่อนจะเปรียบเทียบ digest
ฉันสามารถกู้รหัสผ่านเดิมจาก bcrypt hash ได้หรือไม่?
ไม่ได้ Bcrypt เป็นฟังก์ชันทางเดียว (one-way function) ไม่มีการดำเนินการถอดรหัส วิธีเดียวที่จะหารหัสผ่านเดิมจาก hash คือการเดารหัสผ่านแล้วรันผ่าน bcrypt ด้วยค่า cost และ salt เดียวกันจนกว่า digest จะตรงกัน ซึ่งเป็นสิ่งที่ผู้โจมตีทำในการโจมตีแบบ brute-force จุดประสงค์ของ adaptive cost ใน bcrypt คือเพื่อให้การเดาเหล่านั้นมีต้นทุนที่สูงจนทำไม่ได้จริง
เครื่องมือนี้ใช้งานบนมือถือได้หรือไม่?
ได้ ส่วนต่อประสานกับผู้ใช้ได้รับการออกแบบให้รองรับทุกหน้าจอ (responsive) ทั้งสมาร์ทโฟน แท็บเล็ต และเดสก์ท็อป การสลับโหมด แถบเลื่อนค่า cost และแผงผลลัพธ์จะปรับเปลี่ยนตามความกว้างของหน้าจอ
แหล่งข้อมูลเพิ่มเติม
อ้างอิงเนื้อหา หน้าหรือเครื่องมือนี้ว่า:
"เครื่องสร้างและตรวจสอบ Bcrypt Hash" ที่ https://MiniWebtool.com/th// จาก MiniWebtool, https://MiniWebtool.com/
โดยทีมงาน miniwebtool อัปเดตล่าสุด: 26 เม.ย. 2026