首页 > 编程笔记

MySQL SHA()加密函数的用法

MySQL 中的 SHA() 函数用于生成一个字符串的 SHA-1 哈希值。

SHA-1 是一种加密哈希函数,它产生一个 160 位(20 字节)的哈希值,通常用 40 位的十六进制字符串表示。

SHA函数的语法如下:
SHA(expression)
这里的 expression 可以是任何有效的字符串,包括列名、字面量字符串、变量等。

【实例 1】使用 SHA() 函数加密密码,输入语句如下:
mysql> SELECT SHA('tom123456');
+------------------------------------------+
| SHA('tom123456')                         |
+------------------------------------------+
| 8218b487f490cb484f45c31403eb1f597a2b531a |
+------------------------------------------+

【实例 2】生成用户名和密码组合的 SHA-1 哈希值。
SELECT SHA(CONCAT(username, ':', 'domain', ':', password));
在这个例子中,我们使用 CONCAT() 函数将用户名、域名和密码连接起来,然后对结果应用 SHA() 函数。这可以用于在数据库中存储用户凭证的哈希值,其中 username 和 password 是数据库中的列名。

【实例 3】在 WHERE 子句中使用 SHA() 函数进行条件匹配。
SELECT * FROM users WHERE SHA(password) = '5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8';
在这个例子中,我们假设 users 表中有一个 password 列,我们正在查询密码的 SHA-1 哈希值为 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 的用户记录。

请注意,SHA-1 虽然比 MD5 安全,但近年来也被发现存在安全漏洞,因此对于需要更高安全性的应用,建议使用 SHA-2 系列的哈希函数,如 SHA-256。MySQL 5.7 及以上版本支持 SHA-2 系列函数,例如 SHA2() 函数。

推荐阅读

副业交流群 关注微信公众号,加入副业交流群,学习变现经验,交流各种打法。