แฮช/การเข้ารหัส

Bcrypt Hash + Verify

แฮชรหัสผ่านด้วย bcrypt (พร้อม salt แบบสุ่มและปรับ cost ได้) และตรวจสอบรหัสผ่านกับแฮช bcrypt ที่มีอยู่


                    

Bcrypt is a deliberately slow password-hashing algorithm: unlike MD5 or SHA-256, it intentionally requires heavy computation so that brute-forcing passwords stays impractical even if a database of hashes leaks.

How to use it

Common uses

Things to keep in mind

Pick a cost factor that keeps hashing around 100-300ms on your target server — a balance between security and login-time load.

Bcrypt truncates passwords longer than 72 bytes — characters beyond that limit are ignored by the algorithm.

บทความเกี่ยวกับเครื่องมือนี้: Bcrypt: เหตุใดรหัสผ่านจึงถูกแฮชอย่างช้า ๆ ไม่ใช่เร็ว

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

ทำไม bcrypt ถึงมีค่า "cost" หรือจำนวนรอบ?

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

ทำไมแฮช bcrypt ถึงมีความยาวเท่ากันเสมอไม่ว่ารหัสผ่านจะเป็นอย่างไร?

Bcrypt สร้างแฮชความยาวคงที่ (ปกติ 60 ตัวอักษร) ที่เข้ารหัสเวอร์ชันอัลกอริทึม ค่า cost, salt และแฮชไว้ด้วยกัน ความยาวจึงไม่ขึ้นกับความยาวของรหัสผ่านต้นฉบับ

bcrypt ต้องมีช่อง salt แยกต่างหากหรือไม่?

ไม่ต้อง salt ถูกสร้างขึ้นอัตโนมัติและฝังอยู่ในสตริงผลลัพธ์โดยตรง จึงไม่ต้องเก็บหรือจัดการแยกต่างหาก มันจะรวมอยู่เสมอเมื่อคุณตรวจสอบรหัสผ่านกับแฮช

bcrypt มีข้อจำกัดความยาวของรหัสผ่านหรือไม่?

มี bcrypt ประมวลผลเฉพาะ 72 ไบต์แรกของรหัสผ่านเท่านั้น — ส่วนที่ยาวเกินกว่านั้นจะถูกตัดทิ้งโดยไม่มีการแจ้งเตือน ในทางปฏิบัติเรื่องนี้แทบไม่เป็นปัญหา แต่ควรจำไว้เมื่อทำงานกับรหัสผ่านที่ยาวมากหรืออักขระที่ไม่ใช่ ASCII ซึ่งตัวอักษรหนึ่งตัวอาจใช้หลายไบต์

เหตุใดจึงยังแนะนำ bcrypt ทั้งที่มี Argon2 แล้ว?

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

บทความ: แฮช/การเข้ารหัส

Hash Generator: MD5, SHA-1 และ SHA-256 ต่างกันอย่างไร

เหตุใด MD5 จึงยังใช้ตรวจสอบความถูกต้องของไฟล์ แต่ไม่ใช้กับรหัสผ่าน

Checksum Verifier: วิธีตรวจสอบว่าไฟล์ไม่เสียหาย

เหตุใด checksum ที่ตรงกันจึงยืนยันความถูกต้องของไฟล์ แต่ไม่ยืนยันว่าใครเป็นผู้สร้าง

HMAC: แฮชที่มีคีย์ต่างจากแฮชธรรมดาอย่างไร

เหตุใด SHA-256 ธรรมดาจึงไม่ป้องกันการปลอมแปลงข้อความ แต่ HMAC ป้องกันได้

UUID: ตัวระบุที่แทบไม่เคยซ้ำกันถูกสร้างขึ้นอย่างไร

เหตุใด UUID v4 จึงสามารถสร้างแยกกันได้บนเครื่องนับล้านเครื่องโดยไม่มีความเสี่ยงชนกัน

Password Generator: อะไรที่ทำให้รหัสผ่านแข็งแกร่งจริง ๆ

เหตุใดรหัสผ่านยาวที่ประกอบจากคำในพจนานุกรมจึงแข็งแกร่งกว่ารหัสผ่านสั้นที่มีสัญลักษณ์และตัวเลข

AES: การเข้ารหัสแบบสมมาตรทำงานอย่างไร

เหตุใดคีย์เดียวกันจึงเข้ารหัสและถอดรหัสข้อมูลใน AES และสิ่งนี้ต่างจากการเข้ารหัสแบบอสมมาตรอย่างไร

Argon2: เหตุใดอัลกอริทึมนี้จึงชนะการแข่งขันแฮชรหัสผ่าน

Argon2 ป้องกันการโจมตีด้วย GPU ได้ดีกว่าอัลกอริทึมแฮชรหัสผ่านรุ่นเก่าอย่างไร

Scrypt: เหตุใดอัลกอริทึมนี้จึงต้องการหน่วยความจำมากขนาดนั้น

เหตุใด scrypt จึงต้องการหน่วยความจำมากโดยตั้งใจเพื่อให้การเดารหัสบนอุปกรณ์ ASIC ยากขึ้น

TOTP: รหัสใช้ครั้งเดียวในแอปยืนยันตัวตนทำงานอย่างไร

เหตุใดรหัสใน Google Authenticator จึงทำงานได้โดยไม่มีอินเทอร์เน็ตและซิงค์กับเซิร์ฟเวอร์ผ่านเวลาเท่านั้น

PBKDF2: มาตรฐานการยืดคีย์ที่เก่าแก่ที่สุด

เหตุใดจำนวนรอบการวนซ้ำที่แนะนำสำหรับ PBKDF2 จึงเพิ่มขึ้นทุกปี

X.509: ภายในใบรับรอง SSL มีอะไรบ้าง

เบราว์เซอร์ตรวจสอบอะไรในใบรับรองของเว็บไซต์ก่อนแสดงกุญแจสีเขียว

PGP: การเข้ารหัสด้วยกุญแจสาธารณะและกุญแจส่วนตัวทำงานอย่างไร

เหตุใดจึงสามารถแชร์กุญแจสาธารณะ PGP ได้อย่างอิสระ แต่ห้ามแชร์กุญแจส่วนตัวเด็ดขาด