使用“文本”数据类型在 MySQL 中存储密码哈希?
Using ”text” datatype for storing password hash in MySQL?
不,这个问题不是众多“什么是存储密码的最佳 MySQL 数据类型”的重复问题。
我的密码哈希目前是在 node.js 上使用 pbkdfSync 生成的,我将输出设置为 128(无论它是什么字节位),并且它推出了 256 个字符的哈希。
你可能会问这是什么问题?嗯,这就是我的想法。 在我遇到这个问题之前:使用 VARCHAR 时“列密码的值太长”。
许多 google 搜索都说 varchar 字符限制为 65,535 个字符,但出于某种原因对我来说 它只有 255 并且哈希值大了一个字符比那个。
所以这里的问题是:
我应该更改散列输出大小,以便可以使用 CHAR 数据类型,还是应该继续使用 TEXT 数据类型?或者有没有办法让 char 和 varchar 达到 65,535 个字符的限制?
我使用的是最新的 MySQL 版本。
编辑:还有更多内容,我正在加密哈希和盐,加密输出是 512 个字符的哈希和 344 个字符的盐!
您可以将列的类型更改为 VARCHAR(512),这将允许您在列中存储超过 255 个字符(实际上是 512 个)。可以使用 1 到 8000 之间的值或 VARCHAR(MAX) 作为最大的值(在数据条目长度变化很大的情况下)。
在你的情况下,尝试这样的事情:
`ALTER TABLE name_of_your_table
CHANGE COLUMN password password VARCHAR(512) NOT NULL DEFAULT '';`
不,这个问题不是众多“什么是存储密码的最佳 MySQL 数据类型”的重复问题。
我的密码哈希目前是在 node.js 上使用 pbkdfSync 生成的,我将输出设置为 128(无论它是什么字节位),并且它推出了 256 个字符的哈希。
你可能会问这是什么问题?嗯,这就是我的想法。 在我遇到这个问题之前:使用 VARCHAR 时“列密码的值太长”。
许多 google 搜索都说 varchar 字符限制为 65,535 个字符,但出于某种原因对我来说 它只有 255 并且哈希值大了一个字符比那个。
所以这里的问题是: 我应该更改散列输出大小,以便可以使用 CHAR 数据类型,还是应该继续使用 TEXT 数据类型?或者有没有办法让 char 和 varchar 达到 65,535 个字符的限制?
我使用的是最新的 MySQL 版本。
编辑:还有更多内容,我正在加密哈希和盐,加密输出是 512 个字符的哈希和 344 个字符的盐!
您可以将列的类型更改为 VARCHAR(512),这将允许您在列中存储超过 255 个字符(实际上是 512 个)。可以使用 1 到 8000 之间的值或 VARCHAR(MAX) 作为最大的值(在数据条目长度变化很大的情况下)。
在你的情况下,尝试这样的事情:
`ALTER TABLE name_of_your_table
CHANGE COLUMN password password VARCHAR(512) NOT NULL DEFAULT '';`