在数据库中存储Bcrypt哈希密码时应使用哪种列类型/长度?
我想在数据库中存储哈希密码(使用BCrypt)。什么是一个好的类型,哪个是正确的长度?用BCrypt散列的密码是否总是相同长度?
编辑
哈希示例:
$2a$10$KssILxWNR6k62B7yiX0GAe2Q7wwHlrzhF3LqtVvpyvHZf0MwvNfVu
在对一些密码进行哈希处理之后,BCrypt似乎总是生成60个字符的哈希。
编辑2
很抱歉没有提及实施。我正在使用jBCrypt。
-
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
排序规则以获取更多信息。
-
我应该使用什么列类型/长度将 Bcrypt 散列密码存储在数据库中?
2022-04-11 关注 0 浏览20 1答案
-
哈希密码字段使用哪种数据类型以及什么长度?
2021-02-02 关注 0 浏览211 1答案
-
在数据库中存储密码的最佳方法
2022-03-22 关注 0 浏览51 1答案
-
Django密码存储在数据库中的格式是什么?
2021-01-29 关注 0 浏览112 1答案
-
在 SQL 数据库中存储纬度和经度数据时使用什么数据类型?
2022-04-11 关注 0 浏览57 1答案
-
在数据库管理系统中,索引中使用的数据结构类型为():
2021-09-18 关注 0 浏览186 1答案
-
在数据库管理系统中,索引中使用的数据结构类型为():
2022-03-03 关注 0 浏览28 1答案
-
在 MySQL 数据库中存储纬度/经度时使用的理想数据类型是什么?
2022-03-22 关注 0 浏览38 1答案
-
将用户名和密码存储在数据库中是否安全?
2021-02-02 关注 0 浏览121 1答案
-
在数据库列中存储分隔列表真的那么糟糕吗?
2022-03-22 关注 0 浏览68 1答案