ESC

ตัวสร้าง Bcrypt

2^10 = 1,024 รอบ (ค่าเริ่มต้นที่แนะนำ)
แฮช bcrypt จะแสดงที่นี่...

ข้อมูล Bcrypt

ผลกระทบของค่าต้นทุน

ค่าต้นทุนที่สูงขึ้นเพิ่มความปลอดภัยแต่ใช้เวลาคำนวณนานขึ้น การเพิ่มขึ้นทีละ 1 จะทำให้เวลาคำนวณเพิ่มเป็นสองเท่า

ต้นทุน จำนวนรอบ เวลาโดยประมาณ
8256~40ms
101,024~100ms
124,096~400ms
1416,384~1.5s
1665,536~6s
การแฮชทั้งหมดดำเนินการในเบราว์เซอร์ของคุณด้วย JavaScript ล้วน รหัสผ่านของคุณไม่เคยออกจากอุปกรณ์ของคุณ

ตัวอย่างการใช้งาน

แฮชรหัสผ่าน

สร้างแฮช bcrypt สำหรับรหัสผ่านด้วยค่าต้นทุนเริ่มต้น 10 เหมาะสำหรับแอปพลิเคชันทั่วไป

ตรวจสอบรหัสผ่าน

ตรวจสอบว่ารหัสผ่านตรงกับแฮช bcrypt ที่กำหนดหรือไม่ มีประโยชน์สำหรับทดสอบระบบยืนยันตัวตน

แฮชความปลอดภัยสูง

สร้างแฮชด้วยค่าต้นทุนที่สูงขึ้น (12) สำหรับความปลอดภัยที่เพิ่มขึ้นในแอปพลิเคชันที่ละเอียดอ่อน

คุณสมบัติ

การแฮช Bcrypt

การแฮชรหัสผ่าน bcrypt มาตรฐานอุตสาหกรรมที่ใช้ตัวเข้ารหัส Blowfish พร้อมค่าต้นทุนแบบปรับได้

ต้นทุนปรับได้

ปรับค่าต้นทุนจาก 4 ถึง 31 เพื่อสมดุลระหว่างความปลอดภัยและประสิทธิภาพตามกรณีการใช้งานของคุณ

การตรวจสอบแฮช

ตรวจสอบรหัสผ่านใดก็ได้กับแฮช bcrypt เพื่อทดสอบการยืนยันตัวตนและตรวจสอบความถูกต้องของแฮช

100% ฝั่งไคลเอนต์

การดำเนินการ bcrypt ด้วย JavaScript ล้วน รหัสผ่านของคุณไม่เคยออกจากเบราว์เซอร์

วิธีใช้งาน?

1

ป้อนรหัสผ่าน

พิมพ์หรือวางรหัสผ่านที่คุณต้องการแฮชในแท็บแฮช

2

ตั้งค่าต้นทุน

เลือกค่าต้นทุน (ค่าเริ่มต้น 10) ค่าที่สูงกว่าปลอดภัยกว่าแต่ช้ากว่า

3

สร้างหรือตรวจสอบ

คลิกสร้างแฮชเพื่อสร้างแฮช bcrypt หรือใช้แท็บตรวจสอบเพื่อตรวจสอบรหัสผ่านกับแฮช

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

Bcrypt คือฟังก์ชันการ hashing รหัสผ่านที่ออกแบบโดย Niels Provos และ David Mazières ในปี 1999 ต่างจากฟังก์ชัน hash ทั่วไปเช่น SHA-256 หรือ MD5 ที่ bcrypt ถูกสร้างขึ้นมาเพื่อรหัสผ่านโดยเฉพาะ คุณสมบัติหลักของมันคือ: มันจะสร้างและฝัง random salt โดยอัตโนมัติ (เพื่อป้องกันการโจมตีแบบ rainbow table) และมีค่า cost factor ที่ปรับแต่งได้ซึ่งทำให้การคำนวณ hash แต่ละครั้งช้าลงอย่างตั้งใจ — ทำให้การโจมตีแบบ brute-force มีต้นทุนการประมวลผลที่สูงมาก มันเป็นตัวเลือกที่แนะนำสำหรับการจัดเก็บรหัสผ่านในเว็บแอปพลิเคชันสมัยใหม่ส่วนใหญ่

SHA-256 และ MD5 ถูกออกแบบมาให้ทำงานเร็ว — GPU สมัยใหม่สามารถคำนวณ SHA-256 hashes ได้หลายพันล้านรายการต่อวินาที ความเร็วระดับนั้นเป็นอันตรายมากสำหรับการ hashing รหัสผ่าน: ผู้โจมตีสามารถ brute-force การเดารหัสผ่านได้หลายพันล้านครั้งต่อวินาที ส่วน Bcrypt จงใจให้ทำงานช้า: การคำนวณ hash เพียงครั้งเดียวใช้เวลาหลายมิลลิวินาทีที่ cost factor 10 ซึ่งจำกัดผู้โจมตีให้เหลือเพียงไม่กี่ร้อยครั้งต่อวินาทีแม้จะมีฮาร์ดแวร์ที่ทรงพลัง ห้ามใช้ MD5, SHA-1 หรือแม้แต่ SHA-256 โดยตรงสำหรับการ hashing รหัสผ่าน — ให้ใช้ bcrypt, Argon2 หรือ scrypt แทน

Cost factor 10 (2^10 = 1,024 iterations) เป็นค่าต่ำสุดที่ OWASP แนะนำสำหรับแอปพลิเคชันส่วนใหญ่และให้ผลลัพธ์ hash ในเวลาประมาณ 100ms บนฮาร์ดแวร์สมัยใหม่ ควรใช้ cost factor 12 สำหรับระบบที่จัดการข้อมูลที่อ่อนไหวเช่นบัญชีการเงิน การเพิ่มขึ้นแต่ละขั้นจะทำให้เวลาคำนวณเพิ่มขึ้นเป็นสองเท่า: factor 12 จะใช้เวลานานกว่า factor 10 ถึง 4 เท่า ทดสอบบนฮาร์ดแวร์เซิร์ฟเวอร์จริงของคุณและตั้งเป้าให้ได้ 100-300ms ต่อ hash — ช้าพอที่จะขัดขวางผู้โจมตี และเร็วพอที่จะไม่ทำให้ผู้ใช้ที่ใช้งานจริงหงุดหงิด ห้ามต่ำกว่า factor 10 ในระบบ production

Bcrypt สร้าง cryptographically random salt ขนาด 22 ตัวอักษรสำหรับแต่ละ hash และฝังไว้ใน output string ค่า salt ช่วยรับประกันว่าแม้ผู้ใช้สองคนจะมีรหัสผ่านเหมือนกัน แต่จะได้ค่า hash ที่ต่างกัน วิธีนี้จะช่วยป้องกัน rainbow tables (การจับคู่ hash-to-password ที่คำนวณไว้ล่วงหน้า) และป้องกันไม่ให้ผู้โจมตีเห็นว่าบัญชีสองบัญชีใช้รหัสผ่านเดียวกัน ค่า salt จะถูกจัดเก็บเป็นส่วนหนึ่งของ hash string ($2b$10$<22-char-salt><31-char-hash>) ดังนั้นคุณจึงไม่จำเป็นต้องแยกเก็บมัน

ไม่ได้ Bcrypt (เช่นเดียวกับฟังก์ชัน cryptographic hash ที่เหมาะสมทั้งหมด) เป็นฟังก์ชันแบบทางเดียว — ไม่มีวิธีที่จะย้อนกลับได้ วิธีเดียวในการ "หา" รหัสผ่านจาก bcrypt hash คือการ brute force: ลองเดารหัสผ่านนับล้านตัวจนกว่าจะเจอที่ตรงกัน นี่คือเหตุผลว่าทำไมความช้าของ bcrypt จึงเป็นคุณสมบัติความปลอดภัย ไม่ใช่บั๊ก ในการตรวจสอบว่ารหัสผ่านถูกต้องหรือไม่ คุณต้องใช้ฟังก์ชัน verify — ซึ่งจะทำการ re-hash ข้อมูลนำเข้าด้วย salt ที่เก็บไว้ใน hash และเปรียบเทียบผลลัพธ์

แท็บ Verify จะดึงค่า salt และ cost factor ที่ฝังอยู่ใน hash string เดิมออกมา รัน bcrypt กับรหัสผ่านที่ป้อนเข้าไปโดยใช้พารามิเตอร์เหล่านั้น และเปรียบเทียบผลลัพธ์กับ hash ที่เก็บไว้ หากตรงกัน แสดงว่ารหัสผ่านถูกต้อง นี่คือวิธีการทำงานของระบบยืนยันตัวตนในเว็บแอปพลิเคชัน: ค่า hash ที่เก็บไว้นั้นไม่มีวันเปลี่ยนแปลง และคุณตรวจสอบความพยายามในการล็อกอินโดยการคำนวณหา hash ใหม่ด้วย salt เดิม กระบวนการนี้ใช้เวลาเท่ากับการสร้าง hash ซึ่งเป็นความตั้งใจในการออกแบบ

มี Bcrypt จะทำการตัดรหัสผ่านที่ 72 bytes หมายความว่ารหัสผ่านที่ยาวมาก (เกิน 72 ASCII characters หรือน้อยกว่าสำหรับ Unicode characters ที่เป็นหลายไบต์) จะให้ค่า hash เดียวกันไม่ว่าจะตามด้วยอะไรก็ตามหลัง byte ที่ 72 — "password123" และ "password123abc..." จะได้ค่า hash เดียวกันหาก 72 ไบต์แรกตรงกัน สำหรับแอปพลิเคชันที่ผู้ใช้อาจป้อนรหัสผ่านยาวกว่า 72 ตัวอักษร วิธีแก้ปัญหาทั่วไปคือการนำรหัสผ่านไปผ่าน SHA-256 ก่อน จากนั้นจึงส่ง hash ให้กับ bcrypt (ซึ่ง hash จะมีขนาด 64 ASCII characters ซึ่งอยู่ภายในขีดจำกัดอย่างปลอดภัย)

ไม่เลย เครื่องมือนี้ใช้การทำงานของ bcrypt ที่เป็น pure JavaScript ซึ่งทำงานทั้งหมดในเบราว์เซอร์ของคุณ รหัสผ่านของคุณ, hash ที่สร้างขึ้น และผลการตรวจสอบทั้งหมดจะคงอยู่ในอุปกรณ์ของคุณ ไม่มีอะไรถูกส่งไปยังเซิร์ฟเวอร์ใดๆ สิ่งนี้ทำให้ปลอดภัยในการสร้างและทดสอบ hash โดยใช้รหัสผ่านจริงระหว่างการพัฒนา แต่คุณควรใช้รหัสผ่านทดสอบแทนที่จะเป็นข้อมูลประจำตัวของผู้ใช้จริงเพื่อเป็นแนวทางปฏิบัติที่ดีที่สุด

Bcrypt คืออะไร?

Bcrypt เป็นฟังก์ชันแฮชรหัสผ่านแบบ adaptive ที่ใช้ Blowfish cipher ออกแบบโดย Niels Provos และ David Mazieres ด้วย salt สุ่มและค่า cost ที่ปรับขึ้นได้ bcrypt ยังคงปลอดภัยแม้ hardware จะเร็วขึ้นเรื่อยๆ เป็นมาตรฐานสำหรับเก็บรหัสผ่านในฐานข้อมูล

ทำไมต้องใช้ตัวนี้?

ทุกอย่างรันในเบราว์เซอร์ด้วย JavaScript ล้วน ตั้งค่า cost 4-31 สร้างแฮชทันที ตรวจสอบรหัสผ่านได้เลย ไม่ผ่านเซิร์ฟเวอร์ ไม่มีความเสี่ยง

ความปลอดภัยและความเป็นส่วนตัว

ความปลอดภัยของข้อมูลของคุณคือความสำคัญอันดับแรกของเรา

การประมวลผลภายใน

การประมวลผลทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณ

ไม่มีการถ่ายโอนข้อมูล

ข้อมูลของคุณจะไม่ถูกส่งไปยังเซิร์ฟเวอร์ของเรา

ไม่มีการจัดเก็บข้อมูล

ไม่มีข้อมูลถูกเก็บหรือแบ่งปัน

การเข้ารหัส SSL

การเข้ารหัส SSL สำหรับการเชื่อมต่อที่ปลอดภัย

ขั้นตอนถัดไป

อีกมากมายใน MoreOnlineTools