Ein Bcrypt-Hash kann in einem BINARY(40)
Spalte.
BINARY(60)
ist, wie die anderen Antworten nahelegen, die einfachste und natürlichste Wahl, aber wenn Sie die Speichereffizienz maximieren wollen, können Sie 20 Bytes sparen, indem Sie den Hash verlustfrei dekonstruieren. Ich habe dies auf GitHub ausführlicher dokumentiert: https://github.com/ademarre/binary-mcf
Bcrypt-Hashes folgen einer Struktur, die als modulares Kryptoformat (MCF) bezeichnet wird. Binär MCF (BMCF) dekodiert diese textuellen Hash-Darstellungen in eine kompaktere Binärstruktur. Im Fall von Bcrypt beträgt der resultierende binäre Hash 40 Byte.
Gumbo hat die vier Komponenten eines Bcrypt MCF-Hashes gut erklärt:
$<id>$<cost>$<salt><digest>
Die Dekodierung nach BMCF geht folgendermaßen:
$<id>$
kann in 3 Bits dargestellt werden.
<cost>$
, 04-31, kann in 5 Bits dargestellt werden. Zusammengenommen ergibt dies 1 Byte.
- Das 22-Zeichen-Salz ist eine (nicht standardisierte) Base-64-Darstellung von 128 Bit. Die Base-64-Dekodierung ergibt 16 Bytes.
- Der 31-Zeichen-Hash-Digest kann mit Base-64 in 23 Bytes decodiert werden.
- Das alles zusammen ergibt 40 Bytes:
1 + 16 + 23
Weitere Informationen finden Sie unter dem obigen Link oder unter meine PHP-Implementierung , auch auf GitHub.