แฮชและตรวจสอบ Bcrypt
แฮชรหัสผ่านด้วย bcrypt และตรวจแฮชเทียบกับข้อความธรรมดา
เกี่ยวกับเครื่องมือนี้
แฮชรหัสผ่านด้วย bcrypt ที่ค่าต้นทุนซึ่งคุณเลือก หรือตรวจข้อความธรรมดากับแฮชที่มีอยู่ — ทั้งสองอย่างทำในเบราว์เซอร์ทั้งหมด ซึ่งเป็นสิ่งที่คุณต้องการพอดีเมื่อของที่กำลังทดสอบคือรหัสผ่าน นอกจากนี้ยังมีตัวตรวจแฮชที่แยกแฮช bcrypt ใด ๆ ออกเป็นเวอร์ชัน ค่าต้นทุน และ salt
bcrypt ยังเป็นตัวเลือกที่มั่นคงสำหรับเก็บรหัสผ่าน เพราะมันช้าโดยเจตนาและใส่ salt แยกต่อรหัสผ่าน ค่าต้นทุนเพิ่มงานเป็นสองเท่าในทุก ๆ ขั้น ดังนั้นค่าต้นทุน 12 หมายถึงการตั้งค่ารหัสลับพื้นฐาน 4096 รอบ ตัวแสดงเวลาบอกว่าค่าต้นทุนที่คุณเลือกใช้เวลานานเท่าใด ทำให้การชั่งน้ำหนักระหว่างความปลอดภัยกับความหน่วงเป็นรูปธรรม
การตรวจสอบคือความต้องการที่พบบ่อยกว่าในแต่ละวัน: ยืนยันว่าแฮชในฐานข้อมูลตรงกับรหัสผ่านที่รู้อยู่แล้ว โดยไม่ต้องรันโค้ดของแอป วางทั้งสองอย่างลงไป แล้วรับคำตอบว่าใช่หรือไม่ใช่
คำถามที่พบบ่อย
- ควรใช้ค่าต้นทุนเท่าใดในระบบจริง?
- คำแนะนำคลาสสิกคือ: สูงเท่าที่งบความหน่วงของการเข้าสู่ระบบจะรับได้ ซึ่งปัจจุบันมักอยู่ที่ 10–13 ให้เล็งไว้ที่ 100–300 มิลลิวินาทีต่อการแฮชหนึ่งครั้งบนฮาร์ดแวร์จริงของคุณ JavaScript ในเบราว์เซอร์ช้ากว่าโค้ดเนทีฟ เวลาที่แสดงที่นี่จึงเป็นขอบบนสำหรับเซิร์ฟเวอร์ของคุณ
- ทำไมรหัสผ่านเดียวกันจึงให้แฮชต่างกันทุกครั้ง?
- มีการสร้าง salt สุ่มขนาด 16 ไบต์ต่อการแฮชหนึ่งครั้ง และเก็บไว้ในตัวสตริงแฮชเอง นั่นคือความตั้งใจ — รหัสผ่านที่เหมือนกันจะได้แฮชต่างกัน ทำให้ตารางสายรุ้งที่คำนวณไว้ล่วงหน้าใช้ไม่ได้ การตรวจสอบจะอ่าน salt กลับออกมาจากแฮช นั่นคือเหตุผลที่การเทียบยังทำงานได้
- แต่ละส่วนของแฮช bcrypt หมายถึงอะไร?
- $2b$12$ + 53 อักขระ: 2b คือเวอร์ชันของอัลกอริทึม 12 คือค่าต้นทุน (2^12 รอบ) 22 อักขระถัดมาคือ salt และ 31 อักขระสุดท้ายคือค่าย่อย — ทั้งหมดอยู่ในชุดอักขระ base64 เฉพาะของ bcrypt ตัวตรวจแฮชใต้เครื่องมือจะแยกแฮชใด ๆ ออกมาแบบนี้
- ยังแนะนำ bcrypt มากกว่า Argon2 อยู่ไหม?
- Argon2id คือตัวเลือกแรกในปัจจุบันสำหรับระบบใหม่ (ความหนักด้านหน่วยความจำต้านการเจาะด้วย GPU) ส่วน bcrypt ยังยอมรับได้และพบได้ทุกที่ — คำแนะนำเชิงปฏิบัติคือ อย่าตื่นตระหนกย้ายระบบ bcrypt ที่ใช้งานได้ดีอยู่แล้ว แต่ให้เลือก Argon2id สำหรับงานออกแบบใหม่ ทั้งคู่เหนือกว่าแฮชเร็วอย่าง SHA-256 อยู่หลายขุม