एक Bcrypt हैश को एक BINARY(40)
कॉलम में संग्रहीत किया जा सकता है ।
BINARY(60)
, जैसा कि अन्य उत्तर बताते हैं, सबसे आसान और सबसे स्वाभाविक विकल्प है, लेकिन अगर आप भंडारण क्षमता को अधिकतम करना चाहते हैं, तो आप 20 बाइट्स को हानिरहित डिकंस्ट्रक्ट करके बचा सकते हैं। मैंने GitHub पर इसे और अच्छी तरह से प्रलेखित किया है: https://github.com/ademarre/binary-mcf
Bcrypt हैश मॉड्यूलर संरचना क्रिप्ट प्रारूप (MCF) के रूप में संदर्भित एक संरचना का पालन करें। बाइनरी MCF (BMCF) एक अधिक कॉम्पैक्ट बाइनरी संरचना के लिए इन पाठीय हैश अभ्यावेदन को डिकोड करता है। Bcrypt के मामले में, परिणामी बाइनरी हैश 40 बाइट्स है।
Gumbo ने Bcrypt MCF हैश के चार घटकों को समझाने का अच्छा काम किया:
$<id>$<cost>$<salt><digest>
BMCF को डिकोड करना इस तरह से है:
$<id>$
3 बिट्स में प्रतिनिधित्व किया जा सकता है।
<cost>$
, 04-31, 5 बिट्स में प्रतिनिधित्व किया जा सकता है। 1 बाइट के लिए इन्हें एक साथ रखें।
- 22-वर्ण नमक 128 बिट्स का एक (गैर-मानक) आधार -64 प्रतिनिधित्व है। बेस -64 डिकोडिंग से 16 बाइट मिलती हैं।
- 31-कैरेक्टर हैश डाइजेस्ट बेस -64 को 23 बाइट्स में डिकोड किया जा सकता है।
- इसे 40 बाइट्स के लिए एक साथ रखें:
1 + 16 + 23
आप ऊपर दिए गए लिंक पर अधिक पढ़ सकते हैं, या मेरे PHP कार्यान्वयन की जांच कर सकते हैं , GitHub पर भी।