แฮช Bcrypt สามารถเก็บไว้ในBINARY(40)
คอลัมน์
BINARY(60)
เป็นคำตอบอื่น ๆ ที่แนะนำว่าเป็นตัวเลือกที่ง่ายและเป็นธรรมชาติที่สุด แต่ถ้าคุณต้องการเพิ่มประสิทธิภาพการจัดเก็บให้ได้มากที่สุดคุณสามารถประหยัด 20 ไบต์ได้โดยการแยกส่วนประกอบของแฮช ฉันทำเอกสารนี้ให้ละเอียดยิ่งขึ้นใน GitHub: https://github.com/ademarre/binary-mcf
แฮช Bcrypt ตามโครงสร้างที่เรียกว่ารูปแบบโมดูลเข้ารหัส (MCF) Binary MCF (BMCF) ถอดรหัสการแทนค่าแฮชแบบข้อความเหล่านี้เป็นโครงสร้างไบนารีขนาดกะทัดรัดยิ่งขึ้น ในกรณีของ Bcrypt แฮชไบนารีที่ได้คือ 40 ไบต์
Gumbo ทำงานได้ดีในการอธิบายองค์ประกอบสี่อย่างของแฮช Bcrypt MCF:
$<id>$<cost>$<salt><digest>
การถอดรหัส BMCF เป็นดังนี้:
$<id>$
สามารถแสดงใน 3 บิต
<cost>$
, 04-31 สามารถแสดงได้ใน 5 บิต รวมกันเป็น 1 ไบต์
- เกลือที่มีความยาว 22 ตัวอักษรเป็นค่าพื้นฐานที่ไม่ได้มาตรฐาน 64 บิตจาก 128 บิต การถอดรหัส Base-64 ให้ผลตอบแทน 16 ไบต์
- แฮชย่อย 31 ตัวอักษรสามารถถอดรหัสได้ 64 ฐานเป็น 23 ไบต์
- รวมทั้งหมด 40 ไบต์:
1 + 16 + 23
คุณสามารถอ่านเพิ่มเติมได้ที่ลิงค์ด้านบนหรือตรวจสอบการใช้งาน PHP ของฉันได้ที่ GitHub