แปลงฟรี

รหัสผ่าน Bcrypt เครื่องกำเนิดไฟฟ้า

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

เกี่ยวกับเครื่องมือนี้

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

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

ทางเลือกสมัยใหม่มีอยู่ Argon2 ชนะการแข่งขัน Password Hashing Competition ประจำปี 2015 และนำเสนอความแข็งแกร่งของหน่วยความจำนอกเหนือจากความแข็งแกร่งของเวลา scrypt มีคุณสมบัติที่คล้ายกัน สำหรับการออกแบบใหม่ Argon2id เป็นตัวเลือกที่แนะนำ bcrypt ยังคงเป็นที่ยอมรับและมีการนำไปใช้อย่างกว้างขวาง โดยเฉพาะอย่างยิ่งในสภาพแวดล้อมที่ไม่มี Argon2

ทำไมต้องแฮชรหัสผ่านด้วย bcrypt

การจัดเก็บรหัสผ่านในรูปแบบข้อความธรรมดาถือเป็นการทุจริตต่อหน้าที่ การจัดเก็บด้วยแฮชที่รวดเร็วเช่น SHA-256 นั้นแทบจะไม่ดีกว่าเลย — GPU สมัยใหม่คำนวณแฮช SHA-256 นับพันล้านต่อวินาที ทำให้การโจมตีแบบดุร้ายต่อรหัสผ่านทั่วไปใดๆ ทำได้ภายในเวลาไม่กี่ชั่วโมง ความล่าช้าโดยเจตนาของ bcrypt ทำให้เกิดความเปลี่ยนแปลงทางเศรษฐกิจ: ที่ต้นทุน 12 ผู้โจมตีใช้เวลาประมาณ 250 มิลลิวินาทีต่อรหัสผ่านของผู้สมัคร ทำให้การใช้กำลังแบบเดรัจฉานไม่สามารถทำได้สำหรับรหัสผ่านที่ไม่สำคัญ

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

วิธีใช้งาน

พิมพ์รหัสผ่าน เลือกราคา รับแฮช

  1. ป้อนรหัสผ่าน: พิมพ์รหัสผ่านเพื่อแฮช เครื่องมือนี้ทำงานได้อย่างสมบูรณ์ในเบราว์เซอร์ของคุณ รหัสผ่านจะไม่ถูกส่งไปที่ใดก็ได้
  2. เลือกปัจจัยด้านต้นทุน: ค่าเริ่มต้นคือ 10 ซึ่งให้เวลาแฮชประมาณ 100 มิลลิวินาทีบนฮาร์ดแวร์สมัยใหม่ แนะนำให้ใช้ 12 สำหรับแอปพลิเคชันใหม่ (250 ms) ค่าที่สูงกว่าจะเพิ่มความปลอดภัยโดยที่การตรวจสอบจะช้าลง
  3. สร้าง: แฮชจะสร้างเกลือแบบสุ่มขนาด 16 ไบต์ รันการสืบทอดคีย์ bcrypt และสร้างแฮชในรูปแบบมาตรฐาน $2b$
  4. ใช้แฮช: เก็บผลลัพธ์ทั้งหมด ($2b$cost$saltAndHash) ไว้ในฐานข้อมูลรหัสผ่านของคุณ การตรวจสอบใช้ไลบรารีเดียวกันเพื่อเปรียบเทียบผู้สมัครกับแฮชที่เก็บไว้

กรณีการใช้งานทั่วไป

รายละเอียดทางเทคนิค

bcrypt ใช้ขั้นตอนการตั้งค่าคีย์ของ Blowfish cipher ที่แก้ไขแล้ว ทำซ้ำ 2 ^ เท่าของต้นทุน ปัจจัยด้านต้นทุนคือลอการิทึม — ราคา 12 ช้าเป็นสองเท่าของต้นทุน 11 และช้ากว่าต้นทุน 10 ถึงสี่เท่า มาตราส่วนลอการิทึมนี้ช่วยให้ผู้ดูแลระบบปรับต้นทุนเมื่อเวลาผ่านไปในขณะที่ฮาร์ดแวร์มีการปรับปรุง โดยไม่ต้องออกแบบระบบใหม่

รูปแบบเอาต์พุตคือ $version$cost$saltAndHash โดยที่ saltAndHash เข้ารหัส base64 ด้วยตัวอักษรที่กำหนดเอง โดยทั่วไปเวอร์ชันจะอยู่ที่ $2b$ (เวอร์ชันสมัยใหม่ที่มีข้อบกพร่องแบบสรุป) หรือ $2y$ (เฉพาะ PHP เทียบเท่า) เกลือคือ 16 ไบต์ แฮชคือ 24 ไบต์ ร่วมกันเข้ารหัสเป็น 53 อักขระของ custom-base64

ความยาวอินพุตสูงสุดคือ 72 ไบต์ (จำกัดความยาวคีย์ปักเป้า) รหัสผ่านที่ยาวขึ้นจะถูกตัดทอนอย่างเงียบๆ ซึ่งเป็นพฤติกรรมแปลกๆ ของ bcrypt ที่มีมายาวนาน แนวทางปฏิบัติที่ดีที่สุดคือการจำกัดความยาวของรหัสผ่านไว้ที่ 72 ไบต์หรือแฮชล่วงหน้าด้วย SHA-256 เพื่อทำให้ความยาวเป็นมาตรฐานก่อน bcrypt

แนวทางปฏิบัติที่ดีที่สุด

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

ฉันสามารถปรับแต่งเอาต์พุตที่สร้างขึ้นได้หรือไม่
ใช่. เครื่องมือนี้มีตัวเลือกการปรับแต่งที่หลากหลายเพื่อปรับแต่งผลลัพธ์ให้ตรงตามความต้องการเฉพาะของคุณ ปรับการตั้งค่าก่อนสร้างหรือสร้างใหม่ด้วยตัวเลือกต่างๆ
เนื้อหาที่สร้างขึ้นใช้งานได้ฟรีหรือไม่?
ใช่. ทุกสิ่งที่คุณสร้างด้วยเครื่องมือนี้เป็นของคุณเพื่อใช้เพื่อวัตถุประสงค์ส่วนตัว การศึกษา หรือเชิงพาณิชย์โดยไม่มีข้อจำกัดหรือข้อกำหนดการระบุแหล่งที่มา
สิ่งนี้จำเป็นต้องมีบัญชีหรือไม่?
ไม่ เครื่องมือนี้พร้อมใช้งานทันทีโดยไม่ต้องสมัคร ไม่มีอีเมล และไม่ต้องลงทะเบียน เพียงเปิดหน้าและเริ่มสร้าง
ข้อมูลอินพุตของฉันถูกเก็บไว้เป็นส่วนตัวหรือไม่?
ใช่. การประมวลผลทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณ ข้อมูลอินพุตและเอาต์พุตที่สร้างขึ้นจะไม่ถูกส่งไปยังเซิร์ฟเวอร์ภายนอกใดๆ
ฉันควรเติมเกลือของตัวเองหรือไม่?
ไม่ bcrypt สร้างและจัดเก็บเกลือแบบสุ่มโดยอัตโนมัติ การเติมเกลือของคุณเองนั้นไม่จำเป็นและอาจทำให้เกิดแมลงเล็กๆ น้อยๆ ได้ ใช้การสร้างเกลือเริ่มต้นของห้องสมุด
รหัสผ่านถูกส่งไปยังเซิร์ฟเวอร์หรือไม่?
ไม่ การแฮช bcrypt เกิดขึ้นในเบราว์เซอร์ของคุณ รหัสผ่านจะไม่ออกจากอุปกรณ์ของคุณ
เหตุใดจึงมีรูปแบบ $2a$, $2b$, $2y$?
$2a$ เป็นต้นฉบับ $2b$ แก้ไขข้อบกพร่องแบบสรุปที่ค้นพบในปี 2014 $2y$ เป็นค่าเฉพาะของ PHP ซึ่งเทียบเท่ากับ $2b$ ระบบใหม่ควรสร้างแฮชมูลค่า $2b$
ฉันสามารถดาวน์เกรดแฮชที่มีต้นทุนสูงเป็นต้นทุนที่ต่ำกว่าได้หรือไม่
ไม่ แฮชรวมต้นทุนไว้เป็นส่วนหนึ่งของเอาต์พุต และการตรวจสอบต้องใช้ต้นทุนเดียวกัน หากต้องการเปลี่ยนค่าใช้จ่าย ให้แฮชอีกครั้งเมื่อเข้าสู่ระบบสำเร็จครั้งถัดไป