我想在数据库中存储散列密码(使用 BCrypt).什么是好的类型,哪个是正确的长度?使用 BCrypt 散列的密码是否总是长度相同?
I want to store a hashed password (using BCrypt) in a database. What would be a good type for this, and which would be the correct length? Are passwords hashed with BCrypt always of same length?
编辑
示例哈希:
$2a$10$KssILxWNR6k62B7yiX0GAe2Q7wwHlrzhF3LqtVvpyvHZf0MwvNfVu
在对一些密码进行散列后,BCrypt 似乎总是生成 60 个字符的散列.
After hashing some passwords, it seems that BCrypt always generates 60 character hashes.
编辑 2
抱歉没有提到实现.我正在使用 jBCrypt.
Sorry for not mentioning the implementation. I am using jBCrypt.
bcrypt 的模块化 crypt 格式包括
The modular crypt format for bcrypt consists of
$2$、$2a$ 或 $2y$ 标识 散列算法和格式$.、/、0–9, A–Z, a–z 与标准 Base 64 编码 字母表)包括:$2$, $2a$ or $2y$ identifying the hashing algorithm and format$., /, 0–9, A–Z, a–z that is different to the standard Base 64 Encoding alphabet) consisting of:
因此总长度分别为 59 或 60 字节.
Thus the total length is 59 or 60 bytes respectively.
当您使用 2a 格式时,您将需要 60 个字节.因此对于 MySQL,我建议使用 CHAR(60) BINARY 或 BINARY(60)(参见 _bin 和 binary 排序规则 以了解区别).
As you use the 2a format, you’ll need 60 bytes. And thus for MySQL I’ll recommend to use the CHAR(60) BINARYor BINARY(60) (see The _bin and binary Collations for information about the difference).
CHAR 不是二进制安全的,相等性不仅取决于字节值,还取决于实际的排序规则;在最坏的情况下,A 被视为等于 a.参见 _bin 和 <代码>二进制排序规则了解更多信息.
CHAR is not binary safe and equality does not depend solely on the byte value but on the actual collation; in the worst case A is treated as equal to a. See The _bin and binary Collations for more information.
这篇关于我应该使用什么列类型/长度来在数据库中存储 Bcrypt 哈希密码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
使用 SparkSQL 删除 MySQL 表Dropping MySQL table with SparkSQL(使用 SparkSQL 删除 MySQL 表)
如何有效地使用窗口函数根据 N 个先前值来决定How to use windowing functions efficiently to decide next N number of rows based on N number of previous values(如何有效地使用窗口函数根据
Spark SQL/Hive 查询永远需要加入Spark SQL/Hive Query Takes Forever With Join(Spark SQL/Hive 查询永远需要加入)
在“GROUP BY"中重用选择表达式的结果;条款reuse the result of a select expression in the quot;GROUP BYquot; clause?(在“GROUP BY中重用选择表达式的结果;条款?)
Pyspark DataFrameWriter jdbc 函数的 ignore 选项是忽略整Does ignore option of Pyspark DataFrameWriter jdbc function ignore entire transaction or just offending rows?(Pyspark DataFrameWriter jdbc 函数的 ig
在 Spark 中找不到适合 jdbc 的驱动程序No suitable driver found for jdbc in Spark(在 Spark 中找不到适合 jdbc 的驱动程序)