Bir Bcrypt karması bir BINARY(40)
sütunda saklanabilir .
BINARY(60)
, diğer cevapların önerdiği gibi, en kolay ve en doğal seçimdir, ancak depolama verimliliğini en üst düzeye çıkarmak istiyorsanız, hash'ı kayıpsız şekilde yapılandırarak 20 bayt tasarruf edebilirsiniz. Bunu GitHub'da daha ayrıntılı olarak belgeledim: https://github.com/ademarre/binary-mcf
Bcrypt karmaları, modüler crypt formatı (MCF) olarak adlandırılan bir yapıyı takip eder. İkili MCF (BMCF) bu metin karması temsillerini daha kompakt bir ikili yapıya şifreler. Bcrypt söz konusu olduğunda, sonuçta elde edilen ikili karma 40 bayttır.
Gumbo, bir Bcrypt MCF karma işleminin dört bileşenini açıklamak için iyi bir iş çıkardı:
$<id>$<cost>$<salt><digest>
BMCF'ye kod çözme şu şekildedir:
$<id>$
3 bit ile temsil edilebilir.
<cost>$
04-31, 5 bit halinde temsil edilebilir. Bunları 1 bayt için bir araya getirin.
- 22 karakterlik tuz, 128 bitlik (standart olmayan) bir baz-64 temsilidir. Base-64 kod çözme 16 bayt verir.
- 31 karakterlik karma özet 23 bayta kodlanmış baz-64 olabilir.
- Hepsini 40 bayt için bir araya getirin:
1 + 16 + 23
GitHub'da yukarıdaki bağlantıdan daha fazla bilgi edinebilir veya PHP uygulamamı inceleyebilirsiniz .