MySQL 中散列密码字段应使用哪种数据类型?

mysqlmysqli database

散列密码数据类型取决于我们使用的散列算法。散列算法不依赖于输入大小,因为它产生相同长度的结果。它以一系列十六进制数字给出结果,我们可以借助 UNHEX() 函数将十六进制数字减少一半。

有各种算法和数据类型来存储值。

  • MD5 − 它可以使用 char(32) 或 BINARY(16)。

  • SHA-1 − 它可以使用数据类型 char(40) 或 BINARY(20)。

MD5 示例

以下是示例 −

mysql> select MD5('This is a hashed password');

这是输出。

+----------------------------------+
| MD5('This is a hashed password') |
+----------------------------------+
| e9d4c42db40abbb4724a0047f7e91e67 |
+----------------------------------+
1 row in set (0.03 sec)

了解散列密码的长度。

mysql>  SELECT CHARACTER_LENGTH(MD5('This is a hashed password'));
+----------------------------------------------------+
| CHARACTER_LENGTH(MD5('This is a hashed password')) |
+----------------------------------------------------+
|                                                 32 |
+----------------------------------------------------+
1 row in set (0.04 sec)

SHA-1 示例

mysql> select SHA1('This is a hashed password');

以下是输出。

+------------------------------------------+
| SHA1('This is a hashed password')        |
+------------------------------------------+
| 4e2e1a39dba84a0b5a91043bb0e4dbef23970837 |
+------------------------------------------+
1 row in set (0.00 sec)

我们可以借助 character_length() 函数知道长度。

mysql>  SELECT CHARACTER_LENGTH(SHA1('This is a hashed password'));

以下是输出。

+-----------------------------------------------------+
| CHARACTER_LENGTH(SHA1('This is a hashed password')) |
+-----------------------------------------------------+
|                                                  40 |
+-----------------------------------------------------+
1 row in set (0.00 sec)

相关文章