我应该使用什么列类型/长度将 Bcrypt 散列密码存储在数据库中?
我想在数据库中存储一个散列密码(使用 BCrypt)。什么是一个好的类型,哪个是正确的长度?使用 BCrypt 散列的密码是否总是相同的长度?
编辑
示例哈希:
$2a$10$KssILxWNR6k62B7yiX0GAe2Q7wwHlrzhF3LqtVvpyvHZf0MwvNfVu
在对一些密码进行哈希处理后,BCrypt 似乎总是生成 60 个字符的哈希值。
编辑 2
很抱歉没有提到实施。我正在使用jBCrypt。
-
bcrypt 的模块化 crypt 格式包括
$2$
,$2a$
或$2y$
识别散列算法和格式- 表示成本参数的两位数,后跟
$
- 一个 53 个字符长的 base-64 编码值(它们使用不同于标准 Base 64 编码字母的字母表
.
,/
, ” , ” , ” ),包括:0``9``A``Z``a``z
- 22 个 salt 字符(实际上只有 132 个解码位中的 128 个位)
- 31 个字符的加密输出(实际上只有 186 个解码位中的 184 个位)
因此总长度分别为 59 或 60 个字节。
当您使用 2a 格式时,您需要 60 个字节。因此对于 MySQL,我建议使用
CHAR(60) BINARY
orBINARY(60)
(有关差异的信息,请参阅The __bin_ 和 binary
Collat
​​ions )。CHAR
不是二进制安全的,相等性不仅仅取决于字节值,还取决于实际的排序规则;在最坏的情况下A
被视为等于a
。有关详细信息,请参阅The_bin
和binary
Collat​​ions。
-
在数据库中存储Bcrypt哈希密码时应使用哪种列类型/长度?
2021-02-02 关注 0 浏览149 1答案
-
散列密码字段使用什么数据类型和长度?
2022-05-26 关注 0 浏览9 1答案
-
Django密码存储在数据库中的格式是什么?
2021-01-29 关注 0 浏览112 1答案
-
我可以使用varbinary类型将图像存储在SQL Server数据库中吗?
2021-04-20 关注 0 浏览200 1答案
-
我应该将图像存储在数据库或文件夹中吗?[重复]
2021-02-02 关注 0 浏览100 1答案
-
在数据库中存储密码的最佳方法
2022-03-22 关注 0 浏览51 1答案
-
在 SQL 数据库中存储纬度和经度数据时使用什么数据类型?
2022-04-11 关注 0 浏览57 1答案
-
在 MySQL 数据库中存储纬度/经度时使用的理想数据类型是什么?
2022-03-22 关注 0 浏览38 1答案
-
在数据库管理系统中,索引中使用的数据结构类型为():
2021-09-18 关注 0 浏览186 1答案
-
在数据库管理系统中,索引中使用的数据结构类型为():
2022-03-03 关注 0 浏览28 1答案