DevToolPal
ไทย

สร้างและตรวจสอบแฮช Bcrypt

แฮชรหัสผ่านด้วย bcrypt ตามค่า cost ที่เลือก หรือตรวจว่ารหัสผ่านตรงกับแฮช bcrypt หรือไม่

ทำงานในเครื่อง ไม่มีการอัปโหลด

ตัวเลือก

โหมด

รหัสผ่าน

ผลลัพธ์

ผลลัพธ์จะแสดงที่นี่

เครื่องมือนี้ทำอะไร

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

เครื่องมือนี้ทำได้สองอย่าง:

  • สร้างแฮช: แปลงรหัสผ่านเป็นแฮช bcrypt ตามค่า cost และคำนำหน้าเวอร์ชันที่เลือก
  • ตรวจสอบ: ตรวจว่ารหัสผ่านตรงกับแฮช bcrypt ที่มีอยู่หรือไม่ เช่น จากฐานข้อมูลหรือไฟล์ seed ของเฟรมเวิร์ก

วิธีใช้

  1. พิมพ์ รหัสผ่าน หรือคลิก ตัวอย่าง
  2. ในโหมด สร้างแฮช เลือก Cost และ เวอร์ชัน แฮชจะแสดงทันที คลิก สุ่ม salt ใหม่ เพื่อได้แฮชอื่น
  3. ในโหมด ตรวจสอบ วาง แฮช bcrypt ที่จะตรวจ ผลลัพธ์จะบอกว่ารหัสผ่านตรงกันหรือไม่

อ่านแฮช bcrypt

แฮชอย่าง $2b$10$./3kakECWB0QfIgYzIqciuv449HNnwGbgExtJQQwQ1MofonthOdoK มีสี่ส่วน: เวอร์ชัน 2b, cost 10 (การตั้งค่าคีย์ 2¹⁰ รอบ), salt 22 ตัวอักษร และ checksum 31 ตัวอักษร ทุกอย่างที่เซิร์ฟเวอร์ต้องใช้ตรวจรหัสผ่านภายหลังอยู่ในสตริงเดียวนี้ คุณจึงเก็บแค่แฮช

ข้อจำกัดที่ควรรู้

bcrypt อ่านเฉพาะ 72 ไบต์แรกของรหัสผ่าน รหัสผ่านที่ยาวกว่านั้น หรือมีอักขระที่ไม่ใช่ ASCII จำนวนมาก (แต่ละตัวใช้ 2–4 ไบต์ใน UTF-8) จะถูกตัดโดยไม่แจ้ง เครื่องมือจะเตือนเมื่อเกิดกรณีนี้ หากต้องรองรับวลีรหัสผ่านที่ยาวมาก ให้แฮชก่อนหนึ่งชั้นหรือพิจารณา Argon2id

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

› ทำไมรหัสผ่านเดียวกันจึงได้แฮชไม่เหมือนกันทุกครั้ง

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

› ควรตั้ง cost เท่าไร

เลือก cost สูงสุดที่เซิร์ฟเวอร์รับไหวในการล็อกอินแต่ละครั้ง ปัจจุบันมักอยู่ที่ 10 ถึง 12 ทุกขั้นที่เพิ่มทำให้งานเพิ่มเป็นสองเท่า ให้วัดบนฮาร์ดแวร์จริง โดยทั่วไปตั้งเป้าราว 100–300 มิลลิวินาทีต่อแฮช

› $2a$, $2b$ และ $2y$ ต่างกันอย่างไร

เป็นอัลกอริทึมเดียวกัน $2b$ คือคำนำหน้าปัจจุบันของ OpenBSD, $2y$ คือสิ่งที่ password_hash ของ PHP เขียน และ $2a$ คือรุ่นเก่า ไลบรารีส่วนใหญ่รับได้ทั้งสามแบบ จึงเลือกแบบที่ระบบของคุณต้องการได้เลย

› รหัสผ่านของฉันถูกส่งไปที่ไหนหรือไม่

ไม่ การแฮชและการตรวจสอบทำงานในเบราว์เซอร์ รหัสผ่านและแฮชที่ตรวจอยู่ในหน่วยความจำของหน้านี้เท่านั้น ไม่ถูกบันทึกและไม่ถูกใส่ในลิงก์แชร์