使用“文本”数据类型在MySQL中存储密码哈希?

时间:2019-03-09 07:32:11

标签: mysql node.js database server passwords

不,这个问题不是“许多用于存储密码的最佳MySQL数据类型”的重复。

我的密码哈希值目前是使用node.js上的pbkdfSync进行的,并且我的输出设置为128(无论字节数是多少),并且它推出了256个字符的哈希。

您可能会问是什么问题?好吧,这就是我的想法。 在遇到此问题之前:使用VARCHAR时,“列密码值太长”。

许多google搜索都说varchar字符数限制为65,535个字符,但由于某种原因,我仅255个字符,并且哈希值比这大一个字符。

所以这里的问题是: 我应该更改哈希输出大小,以便可以使用CHAR数据类型,还是应该继续使用TEXT数据类型?还是有办法获得char和varchar的65,535个字符的限制?

我正在使用最新的MySQL版本。

编辑:还有更多,我正在加密哈希和盐,加密后的输出是哈希的512个字符和盐的344个字符!

1 个答案:

答案 0 :(得分:0)

您可以将列的类型更改为VARCHAR(512),这将允许您在列中存储超过255个字符(实际上是512个)。可以使用1到8000的值,也可以使用VARCHAR(MAX)的最大值(在数据条目长度变化很大的情况下)。

在这种情况下,请尝试以下操作:

`ALTER TABLE name_of_your_table 
 CHANGE COLUMN password password VARCHAR(512) NOT NULL DEFAULT '';`