MySQL中加密密码字段应该使用哪种数据类型?长度又应该设置为多少?

MySQL中加密密码字段应该使用哪种数据类型?长度又应该设置为多少?

在Web应用程序中,密码是必须保护的敏感信息之一。为了保证数据安全,我们需要在数据库中将密码存储为哈希值。MySQL中一般使用 VARCHARCHAR 字段类型来存储哈希密码,长度一般设置为60个字符或以上。

阅读更多:MySQL 教程

数据类型

VARCHAR

VARCHAR 是一种可变长度字符串类型。在密码哈希情况下,VARCHAR的长度可以根据哈希函数输出的长度进行调整。例如,bcrypt算法默认输出长度为60个字符,因此可将密码哈希存储在一个 VARCHAR(60) 类型的字段中。

CHAR

CHAR 是一种固定长度的字符串类型。如果使用 CHAR 存储哈希密码,需要保证哈希输出的长度不超过字段设置的长度。例如,如果哈希函数输出的长度为64个字符,可以将哈希密码存储在一个 CHAR(64) 类型的字段中。

示例

以下是一个使用 VARCHAR 存储哈希密码的示例表:

CREATE TABLE users (
  id INT PRIMARY KEY,
  username VARCHAR(50) NOT NULL,
  password VARCHAR(60) NOT NULL
);

INSERT INTO users (id, username, password)
VALUES (1, 'john', '2y10$vPhiwKhzd3NuFv8SdKTfU.,Jv8cgWlrq2NgLAxTNfw9l04zQ/PL2O');
SQL

以下是一个使用 CHAR 存储哈希密码的示例表:

CREATE TABLE users (
  id INT PRIMARY KEY,
  username VARCHAR(50) NOT NULL,
  password CHAR(64) NOT NULL
);

INSERT INTO users (id, username, password)
VALUES (1, 'john', 'c9ae90cb4804f1af146a96d7c83bdfbf17c6fd3b1fa002ed8f59e917a9127b23');
SQL

总结

哈希密码是一种保护用户密码的重要手段,在数据库中使用 VARCHARCHAR 字段类型存储哈希密码,并根据哈希函数输出的长度定义字段类型和长度。建议使用 VARCHAR(60)CHAR(64),这两种长度足够存储常用的哈希函数输出结果。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册