§

เครื่องมือสร้าง Bcrypt

§

สร้างแฮช Bcrypt

10 (1,024 rounds)

Bcrypt กลายเป็นโครงร่างการแฮชรหัสผ่านหลักในการพัฒนาเว็บตั้งแต่เปิดตัวในปี 1999 โดย Provos และ Mazières NIST SP 800-63B แนะนำการแฮชแบบใช้หน่วยความจำสูงสำหรับการจัดเก็บรหัสผ่าน และ OWASP ระบุ bcrypt เป็นตัวเลือกที่ต้องการควบคู่กับ Argon2id Rails มาพร้อม bcrypt ผ่าน has_secure_password Django รองรับเป็น backend แบบเสียบได้ และนักพัฒนา Node.js ใช้ bcryptjs ปัจจัยต้นทุนควบคุมว่าแฮชหนึ่งใช้เวลานานเท่าใด — การเพิ่มต้นทุนเป็นสองเท่าจะเพิ่มงานเป็นสองเท่า แอปส่วนใหญ่ใช้ต้นทุน 10 (1,024 รอบ) เป็นค่าพื้นฐาน ในขณะที่ระบบการเงินหรือระบบดูแลมักใช้ 12 (4,096 รอบ) เครื่องมือนี้ทำงานทั้งหมดในเบราว์เซอร์โดยใช้ JavaScript ดังนั้นรหัสผ่านของคุณไม่เคยออกจากเครื่องของคุณ

bcrypt คืออะไร

Bcrypt คือฟังก์ชันการแฮชรหัสผ่านที่ออกแบบโดย Niels Provos และ David Mazières ซึ่งอิงตาม Blowfish cipher ไม่เหมือนกับ digest ที่เร็วเช่น MD5 หรือ SHA-256 bcrypt ถูกออกแบบให้ช้าและใช้ทรัพยากรมากโดยเจตนา — ทำให้การโจมตีแบบ brute-force ต่อแฮชรหัสผ่านที่ถูกขโมยเป็นไปไม่ได้ในทางปฏิบัติ Bcrypt สร้างเกลือแบบสุ่มโดยอัตโนมัติต่อรหัสผ่านหนึ่งอัน ดังนั้นรหัสผ่านที่เหมือนกันจึงสร้างแฮชที่แตกต่างกัน

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

อัลกอริทึม bcrypt ทำงานทั้งหมดในเบราว์เซอร์ของคุณ นี่คือสิ่งที่เกิดขึ้นทีละขั้นตอน:

  1. รหัสผ่านของคุณถูกเข้ารหัสเป็นไบต์ UTF-8 และป้อนเข้าสู่กำหนดการคีย์ bcrypt ซึ่งเริ่มต้น P-array ขนาด 4,184 ไบต์และ S-boxes ของ Blowfish cipher โดยใช้รหัสผ่านและเกลือ
  2. เกลือแบบสุ่ม 128-bit ถูกสร้างขึ้น เกลือถูกผสมลงในกำหนดการคีย์เพื่อให้เกลือที่ไม่ซ้ำกันแต่ละอันสร้างแฮชที่แตกต่างกันโดยสิ้นเชิงแม้สำหรับรหัสผ่านเดียวกัน
  3. กำหนดการคีย์ถูกทำซ้ำ 2^cost รอบ (เช่น 2^10 = 1,024 รอบที่ต้นทุน 10) แต่ละรอบจะเข้ารหัสซ้ำรายการเกลือและ P-array ทำให้การคำนวณช้าลงตามสัดส่วนเมื่อต้นทุนเพิ่มขึ้น
  4. ผลลัพธ์สุดท้ายคือสตริง 60 ตัวอักษรในรูปแบบ $2b$<cost>$<salt><hash> โดยที่ cost ถูกเติมศูนย์ (เช่น 10), salt คือ 22 ตัวอักษร Base64 และ hash คือ 31 ตัวอักษร Base64
  5. สำหรับการยืนยัน อัลกอริทึมเดียวกันถูกเรียกใช้อีกครั้งกับรหัสผ่านที่ต้องการตรวจสอบและเกลือที่ดึงมาจากแฮชที่เก็บไว้ ถ้าแฮชที่ได้ตรงกับแฮชที่เก็บไว้ แสดงว่ารหัสผ่านถูกต้อง

ฉันควรใช้ปัจจัยต้นทุนใด

ปัจจัยต้นทุนคือลอการิทึมของจำนวนรอบ — ต้นทุน 10 หมายถึง 2^10 = 1,024 รอบ ต้นทุน 12 หมายถึง 4,096 รอบ เลือกตามความต้องการด้านความปลอดภัยและฮาร์ดแวร์ของคุณ:

  • ต้นทุน 4-6 (16-64 รอบ) — สำหรับการพัฒนาและทดสอบเท่านั้น เร็วเกินไปสำหรับการใช้งานจริง ให้การป้องกันน้อยมาก
  • ต้นทุน 8 (256 รอบ) — ขั้นต่ำสำหรับแอปพลิเคชันที่ไม่สำคัญ ประมาณ 6ms บนฮาร์ดแวร์สมัยใหม่
  • ต้นทุน 10 (1,024 รอบ) — ค่าพื้นฐานที่แนะนำในปัจจุบัน ใช้เวลาประมาณ 25ms เหมาะสำหรับแอปพลิเคชันเว็บส่วนใหญ่
  • ต้นทุน 12 (4,096 รอบ) — แนะนำสำหรับพอร์ทัลผู้ดูแลระบบ ระบบการเงิน และแอปความปลอดภัยสูง ใช้เวลาประมาณ 100ms
  • ต้นทุน 14 (16,384 รอบ) — ความปลอดภัยสูง ใช้เวลาประมาณ 400ms ใช้สำหรับรหัสผ่านหลัก คีย์เข้ารหัส หรือเมื่อยอมรับความหน่วงในการเข้าสู่ระบบได้

ทำไมต้องใช้ bcrypt generator นี้

  • ความเป็นส่วนตัวของคุณได้รับการปกป้อง — ทุกรหัสผ่านถูกแฮชภายในเบราว์เซอร์ของคุณ และไม่มีข้อมูลใดออกจากอุปกรณ์ของคุณ
  • คุณได้รับทั้งสองโหมดเคียงข้างกัน: สร้างแฮชใหม่หรือยืนยันแฮชที่มีอยู่โดยไม่ต้องเปลี่ยนหน้า
  • ปัจจัยต้นทุนปรับได้ตั้งแต่ 4 (เร็ว) ถึง 15 (ช้ามาก) เพื่อให้ตรงกับความต้องการด้านความปลอดภัยของแอปพลิเคชันของคุณ
  • แฮชใช้รูปแบบมาตรฐาน $2b$ ที่ทำงานกับทุกภาษาและเฟรมเวิร์กหลัก

การใช้งานทั่วไปของ bcrypt คืออะไร

Bcrypt ถูกใช้อย่างแพร่หลายสำหรับการจัดเก็บและยืนยันรหัสผ่านในอุตสาหกรรม:

  • การยืนยันตัวตนผู้ใช้แอปพลิเคชันเว็บ — จัดเก็บแฮชรหัสผ่านผู้ใช้ในฐานข้อมูลเพื่อไม่ให้รหัสผ่านแบบข้อความธรรมดาถูกบันทึก
  • การแฮชคีย์ API — แฮชความลับของ API ก่อนจัดเก็บ เพื่อให้การรั่วไหลของฐานข้อมูลไม่เปิดเผยข้อมูลประจำตัวที่ถูกต้อง
  • การตรวจสอบการโยกย้าย — ตรวจสอบว่าแฮชรหัสผ่านเดิมจากระบบเก่ายังสามารถยืนยันตัวตนผู้ใช้ได้หลังจากอัปเกรดชั้นการยืนยันตัวตน

แฮช bcrypt มีลักษณะอย่างไร

การแฮชรหัสผ่าน hunter2 ด้วยปัจจัยต้นทุน 10 จะสร้างสตริงเช่น $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy รูปแบบแบ่งออกเป็น: $2b$ (เวอร์ชันอัลกอริทึม), 10 (ปัจจัยต้นทุน), $, จากนั้น 22 ตัวอักษรของเกลือและ 31 ตัวอักษรของแฮช ทั้งหมดเข้ารหัส Base64 การทำงานแต่ละครั้งด้วยรหัสผ่านเดียวกันจะสร้างแฮชที่แตกต่างกันเนื่องจากเกลือแบบสุ่ม

เครื่องมือสร้าง bcrypt นี้ทำงานทั้งหมดในเบราว์เซอร์ของคุณโดยใช้การใช้งาน JavaScript บริสุทธิ์ แฮชรหัสผ่านก่อนจัดเก็บ ยืนยันแฮชที่มีอยู่ และปรับปัจจัยต้นทุนให้ตรงกับความต้องการด้านความปลอดภัยของคุณ — ทั้งหมดโดยไม่ส่งแม้แต่ไบต์เดียวไปยังเซิร์ฟเวอร์