เครื่องมือสร้าง Bcrypt
เครื่องมือสร้าง Bcrypt เป็นเครื่องมือฟรีสำหรับสร้างแฮชรหัสผ่านแบบ bcrypt จากข้อความใดก็ได้ เพื่อจัดเก็บรหัสผ่านอย่างปลอดภัย
bcrypt คืออะไร และยังปลอดภัยอยู่ไหม?
Bcrypt เป็นอัลกอริทึมแฮชรหัสผ่านที่ยังเหมาะสำหรับใช้จัดเก็บรหัสผ่าน หากกำหนดค่า cost อย่างเหมาะสม แม้ว่าระบบรุ่นใหม่มักเลือกใช้ Argon2id มากกว่า Niels Provos และ David Mazières ออกแบบ bcrypt ขึ้นในปี 1999 โดยใช้กระบวนการกำหนดตารางคีย์ของรหัสลับ Blowfish เพื่อจงใจให้การเดารหัสผ่านแต่ละครั้งใช้ทรัพยากรมาก
การแฮชเป็นกระบวนการทางเดียว แอปพลิเคชันจึงตรวจสอบรหัสผ่านด้วยการแฮชค่าที่ผู้ใช้ป้อนตามพารามิเตอร์ที่จัดเก็บไว้ แทนการกู้คืนรหัสผ่านต้นฉบับ bcrypt ต่างจากอัลกอริทึมอเนกประสงค์อย่าง SHA-3 ตรงที่สร้างระเบียนแบบเข้ารหัสซึ่งมีความยาวคงที่และมีข้อมูลครบในตัว ทั้งเวอร์ชัน ค่า cost ค่า salt และ checksum
ระเบียน bcrypt มาตรฐานมีความยาว 60 อักขระ ASCII ส่วน checksum แทนข้อมูล 184 บิต และแสดงเป็น 31 อักขระด้วยรูปแบบการเข้ารหัสที่คล้าย Base64 ซึ่งเป็นแบบเฉพาะของ bcrypt ปัจจุบัน bcrypt ยังไม่ถือว่าถูกทำลายในเชิงการเข้ารหัส แต่มีข้อจำกัดจากการออกแบบที่มีมานาน โดยการใช้งานแบบดั้งเดิมจะประมวลผลข้อมูลนำเข้าไม่เกิน 72 ไบต์ นอกจากนี้ Argon2id ยังมีการป้องกันแบบใช้หน่วยความจำสูง ซึ่ง bcrypt ไม่มี
ใช้เครื่องมือสร้าง Bcrypt อย่างไร?
ป้อนข้อความที่ต้องการแฮช เรียกใช้เครื่องมือ แล้วคัดลอกค่าที่แสดงในช่องผลลัพธ์ แฮช Bcrypt ให้จัดเก็บผลลัพธ์ทั้งหมด อย่าแยกเก็บเฉพาะ checksum ช่วงท้าย
- ใช้รหัสผ่านหรือข้อความทดสอบตามจริงทุกประการ รวมถึงตัวพิมพ์ใหญ่และเล็ก ช่องว่าง และเครื่องหมายวรรคตอน
- สร้างผลลัพธ์ bcrypt
- คัดลอกให้ครบทั้ง 60 อักขระ รวมถึงเครื่องหมายเวอร์ชันและค่า cost ที่อยู่ด้านหน้า
- บันทึกผลลัพธ์ลงในคอลัมน์แฮชรหัสผ่านของฐานข้อมูล
- เมื่อลงชื่อเข้าใช้ ให้ใช้ฟังก์ชันตรวจสอบ bcrypt ของแพลตฟอร์ม อย่าสร้างแฮชใหม่แล้วเปรียบเทียบข้อความโดยตรง
โดยปกติ bcrypt จะสร้าง salt แบบสุ่มใหม่สำหรับแฮชแต่ละรายการ ดังนั้นการแฮชข้อมูลเดียวกันสองครั้งอาจได้ระเบียนต่างกันสองค่า และทั้งคู่ยังตรวจสอบกับข้อมูลเดิมได้สำเร็จ นี่เป็นพฤติกรรมตามปกติที่ช่วยไม่ให้รหัสผ่านเหมือนกันมีค่าจัดเก็บเหมือนกัน
การประมวลผลเกิดขึ้นบนเซิร์ฟเวอร์ ข้อมูลที่คุณป้อนจะส่งไปยังเซิร์ฟเวอร์ผ่าน HTTPS และไม่มีการจัดเก็บ หากเป็นรหัสผ่านที่ใช้งานจริงในระบบ โปรดพิจารณาว่าการป้อนรหัสผ่านลงในบริการออนไลน์ของบุคคลที่สามสอดคล้องกับนโยบายความปลอดภัยขององค์กรหรือไม่
ถอดรหัสหรือย้อนกลับแฮช bcrypt ได้ไหม?
ไม่ได้ แฮช bcrypt ไม่สามารถถอดรหัสได้ เพราะไม่ใช่ข้อมูลที่ผ่านการเข้ารหัสและไม่มีคีย์สำหรับถอดรหัส วิธีโจมตีที่ทำได้ในทางปฏิบัติคือเดารหัสผ่านที่เป็นไปได้ แล้วตรวจสอบแต่ละค่ากับแฮชที่จัดเก็บไว้
Bcrypt ทำให้กระบวนการเดาช้าลงด้วยค่า cost ที่ปรับได้ แต่ไม่อาจทำให้รหัสผ่านที่สั้น พบได้ทั่วไป หรือเคยรั่วไหลมาก่อนมีความปลอดภัย และผู้โจมตีที่พยายามอย่างจริงจังยังอาจค้นพบข้อมูลนำเข้าที่คาดเดาง่ายได้ salt ช่วยป้องกันไม่ให้ผู้โจมตีนำตารางที่คำนวณไว้ล่วงหน้าชุดเดียวไปใช้กับหลายบัญชี แต่ salt ไม่ใช่ข้อมูลลับและรวมอยู่ในระเบียนที่จัดเก็บ
วิธีอ่านผลลัพธ์ bcrypt
โดยทั่วไปผลลัพธ์ bcrypt จะใช้รูปแบบ modular crypt ตัวอย่างโครงสร้างคือ $2y$12$[22-character salt][31-character checksum] ค่านี้ใช้แสดงรูปแบบเท่านั้น ไม่ใช่แฮชของรหัสผ่านที่ระบุไว้
| ส่วนประกอบ | ความยาวโดยทั่วไป | หน้าที่ |
|---|---|---|
| เครื่องหมายเวอร์ชัน | 4 อักขระ | ระบุรูปแบบย่อยของ bcrypt เช่น $2y$ หรือ $2b$ |
| Cost | 3 อักขระ | บันทึกค่า cost สองหลัก ตามด้วยอักขระคั่น |
| Salt | 22 อักขระ | เข้ารหัส salt แบบสุ่มขนาด 128 บิต |
| Checksum | 31 อักขระ | เข้ารหัส checksum ของ bcrypt ขนาด 184 บิต |
ต้องเก็บส่วนประกอบเหล่านี้ไว้ด้วยกัน การแก้ไขอักขระ ตัดค่าให้สั้นลง หรือบันทึกลงในคอลัมน์ที่สั้นเกินไป มักทำให้การตรวจสอบล้มเหลว เครื่องหมายเวอร์ชันอาจแตกต่างกันระหว่างไลบรารีที่ใช้งานร่วมกันได้ แอปพลิเคชันจึงควรใช้ API สำหรับรหัสผ่านที่เป็นมาตรฐาน แทนการแยกและประกอบระเบียนขึ้นใหม่เอง
ควรใช้ bcrypt เมื่อใด?
ควรใช้ bcrypt สำหรับแฮชรหัสผ่านในระบบที่รองรับอยู่แล้ว โดยเฉพาะเมื่อจำเป็นต้องทำงานร่วมกับฐานข้อมูลหรือเฟรมเวิร์กเดิม อัลกอริทึมนี้ถูกออกแบบให้ทำงานช้าและใช้ salt จึงไม่เหมาะสำหรับใช้เป็น checksum ของไฟล์ทั่วไปหรือตัวระบุสำหรับกำจัดข้อมูลซ้ำ
- งานที่เหมาะสม ได้แก่ รหัสผ่านของแอปพลิเคชัน การทดสอบย้ายระบบ การตรวจสอบขนาดฟิลด์ในฐานข้อมูล และการจำลองสภาพแวดล้อมพัฒนาที่รองรับ bcrypt
- เลือกใช้ Argon2id แทน สำหรับระบบรหัสผ่านใหม่ เมื่อแพลตฟอร์มรองรับและสามารถจัดการการตั้งค่าหน่วยความจำได้อย่างเหมาะสม
- เลือกใช้ SHA-3 แทน สำหรับตรวจสอบความสมบูรณ์ของไฟล์ สร้างลายนิ้วมือของเนื้อหา หรือกำจัดข้อมูลซ้ำ เครื่องมือสร้าง SHA-3/384 และเครื่องมือสร้าง SHA-3/512 ให้ค่าไดเจสต์อเนกประสงค์ ไม่ใช่ระเบียนรหัสผ่าน
- อย่าใช้ bcrypt สำหรับลายเซ็นดิจิทัล การยืนยันความถูกต้องของข้อความ การเข้ารหัส หรือการจัดเก็บข้อมูลที่ต้องกู้คืนในภายหลัง
ช่องว่าง เครื่องหมายวรรคตอน และตัวเลขจะถูกประมวลผลเป็นข้อมูลนำเข้า ไม่ได้ถูกละเว้น อักขระที่มีเครื่องหมายกำกับเสียงและอักขระที่ไม่ใช่อักษรละตินจะถูกเข้ารหัสเป็นไบต์ก่อนที่ bcrypt จะประมวลผล ดังนั้นทั้งสองระบบต้องสร้างข้อมูลไบต์เดียวกัน โดยใช้การเข้ารหัสอักขระและการปรับ Unicode ให้เป็นรูปแบบมาตรฐานอย่างสอดคล้องกัน ขีดจำกัด 72 ไบต์มีความสำคัญเป็นพิเศษในกรณีนี้ เพราะอักขระ Unicode หนึ่งตัวอาจใช้พื้นที่มากกว่าหนึ่งไบต์ ในทางเทคนิคสามารถแฮชข้อมูลนำเข้าที่ว่างเปล่าได้ แต่รหัสผ่านว่างไม่ช่วยต้านทานการคาดเดาอย่างมีความหมาย
คำถามที่พบบ่อย
แฮช bcrypt ต้องใช้พื้นที่ในฐานข้อมูลเท่าไร?
ควรเผื่อพื้นที่อย่างน้อย 60 อักขระ ASCII สำหรับระเบียน bcrypt แบบทั่วไป การใช้ฟิลด์ที่กว้างกว่านี้เล็กน้อยอาจช่วยรองรับการย้ายไปใช้อัลกอริทึมรหัสผ่านอื่นในอนาคต ส่วนคอลัมน์ไบนารีไม่จำเป็นสำหรับรูปแบบเข้ารหัสมาตรฐาน
ย้ายแฮชรหัสผ่าน SHA เดิมไปเป็น bcrypt ได้ไหม?
คุณไม่สามารถแปลงไดเจสต์ SHA ที่มีอยู่ให้เป็นแฮช bcrypt ของรหัสผ่านต้นฉบับได้ หากไม่ทราบรหัสผ่านนั้น วิธีที่ใช้กันทั่วไปคือ ตรวจสอบแฮชเก่าเมื่อผู้ใช้ลงชื่อเข้าใช้ครั้งถัดไป จากนั้นนำรหัสผ่านที่ผู้ใช้ป้อนมาแฮชด้วย bcrypt หรือ Argon2id แล้วใช้ระเบียนใหม่แทนค่าเดิม
ก่อนบันทึกผลลัพธ์ ให้ตรวจสอบว่าคัดลอกค่าครบทั้ง 60 อักขระแล้ว ฟิลด์ฐานข้อมูลไม่ตัดค่าให้สั้นลง และแอปพลิเคชันปลายทางรองรับเครื่องหมายเวอร์ชันที่อยู่ในระเบียน
เครื่องมือยอดนิยม
สร้างลายเซ็นแบบกำหนดเองของคุณได้อย่างง่ายดายและดาวน์โหลดได้อย่างสะดวก
ใช้เครื่องมือ ping ของเราเพื่อตรวจสอบสถานะและเวลาตอบสนองของเว็บไซต์ เซิร์ฟเวอร์ หรือพอร์ตใด ๆ ได้อย่างรวดเร็วและมีประสิทธิภาพ
เครื่องมือค้นหา IP ของ Digily Link ให้ข้อมูลโดยละเอียดเกี่ยวกับที่อยู่ IP ใด ๆ ใช้บริการออนไลน์ฟรีนี้เพื่อดูข้อมูล IP อย่างครบถ้วน
สร้างลิงก์ WhatsApp ฟรีได้ทันทีด้วยเครื่องมือสร้างลิงก์ WhatsApp ของเรา เพิ่มข้อความที่กำหนดเองและเริ่มแชทได้ในคลิกเดียว โดยไม่ต้องเข้าสู่ระบบหรือเขียนโค้ด