MariaDB SHA() 函数的基础用法与实例

MariaDB SHA() 函数用来对输入的字符串进行 SHA 加密运算。

发布于

MariaDB SHA() 函数用来对输入的字符串进行 SHA 加密运算。它常用于需要对敏感数据进行加密存储的场景。

语法

MariaDB SHA() 函数的语法如下:

SHA(str)
  • str:要加密的字符串。如果为 NULL,则函数返回 NULL

该函数返回一个 40 位的字符串,表示输入字符串的 SHA-1 160 位校验和。

实例

对字符串进行 SHA 加密

此示例展示如何对一个字符串使用 SHA() 函数进行加密。

SELECT SHA('hello');

以下是该语句的输出:

+------------------------------------------+
| SHA('hello')                             |
+------------------------------------------+
| aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d |
+------------------------------------------+

这里将字符串 'hello' 进行 SHA 加密,得到一个 40 位的十六进制字符串。

对 NULL 值进行 SHA 加密

此示例展示当输入为 NULL 时,SHA() 函数的返回值为 NULL。

SELECT SHA(NULL);

以下是该语句的输出:

+-----------+
| SHA(NULL) |
+-----------+
| NULL      |
+-----------+

将 SHA 加密结果存储到表中

此示例展示如何将字符串的 SHA 加密结果存储到表中。

DROP TABLE IF EXISTS users;
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50),
    password CHAR(40)
);

INSERT INTO users (username, password) VALUES
    ('john', SHA('mypassword')),
    ('alice', SHA('secret123'));

SELECT * FROM users;

以下是该语句的输出:

+----+----------+------------------------------------------+
| id | username | password                                 |
+----+----------+------------------------------------------+
|  1 | john     | 91dfd9ddb4198affc5c194cd8ce6d338fde470e2 |
|  2 | alice    | f2b14f68eb995facb3a1c35287b778d5bd785511 |
+----+----------+------------------------------------------+

这里首先创建了一个 users 表,其中 password 列的类型为 CHAR(40),用于存储 SHA 加密后的密码。然后将两个用户的密码使用 SHA() 函数进行加密后插入到表中。

使用 SHA 加密验证密码

此示例展示如何使用 SHA 加密进行密码验证。

DROP TABLE IF EXISTS login_test;
CREATE TABLE login_test (
    username VARCHAR(50),
    password CHAR(40)
);

INSERT INTO login_test VALUES
    ('john', SHA('mypassword')),
    ('alice', SHA('secret123'));

SELECT
    (CASE WHEN SHA('mypassword') = (SELECT password FROM login_test WHERE username = 'john')
     THEN 'Login Successful'
     ELSE 'Invalid Password' END) AS status;

以下是该语句的输出:

+------------------+
| status           |
+------------------+
| Login Successful |
+------------------+

这里首先创建了一个 login_test 表,并插入了两个用户的用户名和 SHA 加密后的密码。然后使用一个子查询和 CASE 语句,将输入的密码 'mypassword' 进行 SHA 加密,并与表中 john 用户的加密密码进行比对。由于密码匹配,因此返回 'Login Successful'

使用 SHA 加密计算校验和

此示例展示如何使用 SHA() 函数计算一个文件的校验和。

假设我们有一个文本文件 data.txt,内容如下:

Hello, World!
This is a sample text file.

我们可以使用以下语句计算该文件的 SHA 校验和:

SELECT SHA(LOAD_FILE('/path/to/data.txt'));

以下是该语句的输出:

+------------------------------------------+
| SHA(LOAD_FILE('/path/to/data.txt'))      |
+------------------------------------------+
| b63b5ea65458975b7ad91f6fb8336665927441a1 |
+------------------------------------------+

这里使用 LOAD_FILE() 函数读取文件内容,然后对文件内容使用 SHA() 函数计算 SHA 校验和。

相关函数

以下是几个与 MariaDB SHA() 函数相关的函数:

  • MariaDB SHA1() 函数用来对输入的字符串进行 SHA-1 加密运算,与 SHA() 函数的结果相同。
  • MariaDB SHA2() 函数用来对输入的字符串进行 SHA-2 加密运算,支持多种不同的散列长度。
  • MariaDB MD5() 函数用来对输入的字符串进行 MD5 加密运算。

结论

MariaDB SHA() 函数是一个非常有用的函数,可以对字符串进行 SHA 加密运算。它在需要对敏感数据进行加密存储或进行数据完整性校验时非常实用。通过了解该函数的用法和相关实例,我们可以更好地利用该函数来保护和验证数据。