迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MySQL >

将密码存储在 MySQL 数据库中

作者:迹忆客 最近更新:2023/04/18 浏览次数:

如果您不知道如何在 MySQL 数据库中存储密码,那么这是正确的地方。 在本指南中,您将能够了解如何在 MySQL 数据库中存储哈希密码,不同的技术及其用于存储哈希密码的具体方法。


什么是散列

散列将给定数量的键或字符串转换为较短的固定长度值。 在散列中,固定大小的数据是指任意数量的键或字符串转换成散列字符的大小相同。

散列的另一个属性是它是一个不可检索的过程,这意味着如果一个值已经转换为散列,则无法检索原始数据值。

MySQL中使用了不同的散列函数; 这些是:

  1. MD5 (str)
  2. SHA1 (str)
  3. PASSWORD
  4. ENCRYPT

使用 MD5 (str) 在 MySQL 中存储密码

md5 是一个函数,它获取数据 128 位校验和并将其作为 32 位十六进制数字的字符串返回。

首先,我们在数据库中创建一个表 clients,并在该表中创建两个数据类型为 varchar 的字段。

客户表

我们插入一些值并使用 md5 创建哈希密码。

insert into clients 1 using md5

insert into clients 2 using md5

如您所见,md5 函数将我们的两个输入值都转换为 32 位十六进制数字。

当我们说它是一个不可检索的函数时,让我们展示一下我们之前的意思。

use md5 to get data 1

use md5 to get data 2

如您所见,我们必须对两个值都使用 md5 函数才能取回数据; 否则,它会产生一个错误。


使用 SHA1 (str) 在 MySQL 中存储密码

sha1就是这样一个散列函数,范围比之前的md5函数大很多。 它将数据校验和 160 位转换为 40 位十六进制数字的字符串。

这里有一个例子,可以让你更好地理解。

insert into clients using sha1

到目前为止,您应该已经充分了解这两个散列函数的工作原理以及它们之间的区别。 关于 sha1 的另一件事是它有更好的可用版本,提供更大的范围。

这些如下:

  • SHA224 - 它将数据转换为 224 位校验和并返回 56 位十六进制数字的字符串。
  • SHA256 - 它将数据转换为 256 位校验和并返回 64 位十六进制数字的字符串。
  • SHA384 - 它将数据转换为 384 位校验和并返回 96 位十六进制数字的字符串。
  • SHA512 - 它将数据转换为 512 位校验和并返回 128 位十六进制数字的字符串。

使用 PASSWORD 函数在 MySQL 中存储密码

密码函数使用纯文本密码字符串生成散列密码。 如果参数为 NULL,密码函数将返回 NULL。

让我们举几个例子,以便您更好地理解。

SELECT
PASSWORD('xyz');

输出:

6gd7gb67shy87865

现在,让我们尝试一个包含数字和字符的字符串。

SELECT
PASSWORD('xyz123');

输出:

54fg56gs32sgi3862

关于密码功能的另一个重要事项是它不支持所有 MySQL 版本。 支持的版本是:

  • MySQL 5.6
  • MySQL 5.5
  • MySQL 5.1
  • MySQL 5.0
  • MySQL 4.1

使用 ENCRYPT 函数在 MySQL 中存储密码

它是将一串字符转换为难以读取的二进制数据。 加密的数据可以在以后轻松解密。

重要的一点是列的数据类型应该是 BLOB。

对于加密,使用了两种类型的函数:

  • AES(高级加密标准)- 它使用官方 AES 算法,确保使用 128 位密钥进行编码。 对于使用 aes 的加密,您必须编写 AES_ENCRYPT(str,key_str)
  • DES(数据加密标准)使用 Triple-DES 算法。 这种加密的条件是 MySQL 应该配置 SSL 支持。

这里需要考虑的一点是,加密功能仅适用于 Unix 操作系统。 所以对于其他操作系统,我们将不得不使用 AES 或 DES 加密。

为了让您熟悉这项技术,让我们深入了解加密功能。

insert into clients using encrypt

对值应用 AES 加密后,我们可以在表中看到它的效果。 再举个例子:

insert into clients using encrypt 2

要检索我们的价值,我们必须提供正确的密钥; 否则,我们将无法取回所需的数据。

aes-decrypt

在这里,我们插入了错误的密钥,结果如下。

wrong key

在这里,我们使用正确的键检索我们的其他值。

right key

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 MySQL 中声明和使用变量

发布时间:2024/03/26 浏览次数:115 分类:MySQL

当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。

在 MySQL 中实现刷新权限

发布时间:2024/03/26 浏览次数:211 分类:MySQL

本教程介绍了 MySQL 中的刷新权限命令,用于刷新授权表并影响允许的更改。

在 MySQL 中设置时区

发布时间:2024/03/26 浏览次数:93 分类:MySQL

在本教程中,我们将学习如何在 MySQL 服务器中更改时区。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便