开发者社区> 问答> 正文

在数据库中存储Bcrypt哈希密码时应使用哪种列类型/长度?

我想在数据库中存储哈希密码(使用BCrypt)。什么是一个好的类型,哪个是正确的长度?用BCrypt散列的密码是否总是相同长度?

编辑

哈希示例:

$2a$10$KssILxWNR6k62B7yiX0GAe2Q7wwHlrzhF3LqtVvpyvHZf0MwvNfVu

在对一些密码进行哈希处理之后,BCrypt似乎总是生成60个字符的哈希。

展开
收起
保持可爱mmm 2020-05-10 20:32:37 954 0
1 条回答
写回答
取消 提交回答
  • bcrypt的模块化crypt格式包括

    $2$,$2a$或$2y$识别哈希算法和格式 表示费用参数的两位数字值,后跟 $ 一个53字符长的基64编码的值(它们使用的字母表.,/,0- 9,A- Z,a- z也就是不同的标准Base 64编码字母表)由以下组成: 盐的22个字符(有效地是132个解码位中的128个位) 31个字符的加密输出(实际上只有186个解码位中的184位) 因此,总长度分别为59或60个字节。

    使用2a格式时,需要60个字节。因而对于MySQL的,我会建议使用CHAR(60) BINARY或BINARY(60)(见的_bin和二进制排序规则有关的差异信息)。

    CHAR不是二进制安全的,相等性不仅仅取决于字节值,还取决于实际的排序规则;在最坏的情况下A被视为等于a。见的_bin和binary排序规则以获取更多信息。来源:stack overflow

    2020-05-10 20:32:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载