我想在数据库中存储散列密码(使用BCrypt).什么样的字体比较合适,哪种长度合适?用BCrypt散列的密码是否总是长度相同?
EDIT
示例哈希:
$2a$10$KssILxWNR6k62B7yiX0GAe2Q7wwHlrzhF3LqtVvpyvHZf0MwvNfVu
在对一些密码进行散列后,BCrypt似乎总是生成60个字符的散列.
EDIT 2
很抱歉没有提及实施.我用jBCrypt.
我想在数据库中存储散列密码(使用BCrypt).什么样的字体比较合适,哪种长度合适?用BCrypt散列的密码是否总是长度相同?
EDIT
示例哈希:
$2a$10$KssILxWNR6k62B7yiX0GAe2Q7wwHlrzhF3LqtVvpyvHZf0MwvNfVu
在对一些密码进行散列后,BCrypt似乎总是生成60个字符的散列.
EDIT 2
很抱歉没有提及实施.我用jBCrypt.
bcrypt的模块化加密格式包括
$2$
、$2a$
或$2y$
识别hashing algorithm and format$
.
、/
、0
-9
、A
-Z
、a
-z
),包括:
因此,总长度分别为59或60字节.
使用2a格式时,需要60字节.因此,对于MySQL,我建议使用CHAR(60) BINARY
or BINARY(60)
(有关差异的信息,请参阅The _bin and binary Collations).
CHAR
不是二进制安全的,相等性不仅取决于字节值,还取决于实际的排序规则;在最坏的情况下,A
被视为等于a
.更多信息请参见The _bin
and binary
Collations.