首页 > 解决方案 > 使用“文本”数据类型在 MySQL 中存储密码哈希?

问题描述

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

我的密码哈希目前是在 node.js 上使用 pbkdfSync 制作的,我将输出设置为 128(无论它是什么字节),它正在推出一个 256 字符的哈希。

你可能会问有什么问题?嗯,我就是这么想的。在我遇到这个问题之前:“使用 VARCHAR 时,列密码的值太长”。

许多谷歌搜索都说 varchar 字符限制为 65,535 个字符,但出于某种原因对我来说它只有 255 个,而哈希值比这大一个字符。

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

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

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

标签: mysqlnode.jsdatabaseserverpasswords

解决方案


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

在你的情况下,尝试这样的事情:

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

推荐阅读