加密与压缩函数

加密与压缩函数

AES_DECRYPT() 函数

MySQLAES_DECRYPT()函数使用AES加密算法解密一个由AES_ENCRYPT()加密后的字符串。AES_DECRYPT()语法这里是MySQLAES_DECRYPT()函数的语法:AES_DECRYPT(crypt_str,key_str)参数crypt_str必需的。一个要加密的字符

MySQL AES_DECRYPT() 函数使用 AES 加密算法解密一个由 AES_ENCRYPT() 加密后的字符串。

AES_DECRYPT() 语法

这里是 MySQL AES_DECRYPT() 函数的语法:

AES_DECRYPT(crypt_str, key_str)

参数

  • crypt_str

    必需的。一个要加密的字符串。

  • key_str

    必需的。密钥。

返回值

MySQL AES_DECRYPT() 函数使用指定的密钥 key_str 解密加密的字符串 crypt_str,并返回解密后的原始明文字符串。

如果任意参数为 NULL,MySQL AES_DECRYPT() 函数返回 NULL

AES_DECRYPT() 示例

要使用 AES_DECRYPT() 解密字符串,请使用如下语句:

SELECT AES_DECRYPT(AES_ENCRYPT('hello', '123456'), '123456');
+-------------------------------------------------------+
| AES_DECRYPT(AES_ENCRYPT('hello', '123456'), '123456') |
+-------------------------------------------------------+
| hello                                                 |
+-------------------------------------------------------+

如果任意参数为 NULL,MySQL AES_DECRYPT() 函数返回 NULL

SELECT AES_DECRYPT(NULL, '123456');
+-----------------------------+
| AES_DECRYPT(NULL, '123456') |
+-----------------------------+
| NULL                        |
+-----------------------------+

AES_ENCRYPT() 函数

MySQLAES_ENCRYPT()函数使用AES加密算法加密一个字符串。AES_ENCRYPT()语法这里是MySQLAES_ENCRYPT()函数的语法:AES_ENCRYPT(str,key_str)参数str必需的。一个要加密的字符串。key_str必需的。密钥。返回值MySQLAES_EN

MySQL AES_ENCRYPT() 函数使用 AES 加密算法加密一个字符串。

AES_ENCRYPT() 语法

这里是 MySQL AES_ENCRYPT() 函数的语法:

AES_ENCRYPT(str, key_str)

参数

  • str

    必需的。一个要加密的字符串。

  • key_str

    必需的。密钥。

返回值

MySQL AES_ENCRYPT() 函数对指定的字符串 str 使用指定的密钥 key_str 进行 AES 加密,并返回加密后的二进制字符串。

如果被加密的字符串中含有非法数据或者不正确的填充,MySQL AES_ENCRYPT() 函数返回 NULL

如果任意参数为 NULL,MySQL AES_ENCRYPT() 函数返回 NULL

AES_ENCRYPT() 示例

要对字符串 hello 使用密钥 123456 使用加密,请使用如下语句:

SELECT AES_ENCRYPT('hello', '123456');
+----------------------------------------------------------------+
| AES_ENCRYPT('hello', '123456')                                 |
+----------------------------------------------------------------+
| 0xC8F20B494C26570BC50BE634407306B4                             |
+----------------------------------------------------------------+

这里, mysql client 输出显示的是二进制字符串对应的十六进制的字符串。要禁用显示十六进制,请在登录时使用 --binary-as-hex=false 参数以禁用将二进制内容显示为十六进制。

如果想查看原字符串,请使用 AES_DECRYPT() 函数。

COMPRESS() 函数

MySQLCOMPRESS()函数压缩一个字符串并返回压缩后的二进制字符串。要解压缩COMPRESS()函数压缩后的内容,请使用UNCOMPRESS()函数。COMPRESS()语法这里是MySQLCOMPRESS()函数的语法:COMPRESS(str)参数str必需的。一个要压缩的字符串。返回值

MySQL COMPRESS() 函数压缩一个字符串并返回压缩后的二进制字符串。

要解压缩 COMPRESS() 函数压缩后的内容,请使用 UNCOMPRESS() 函数。

COMPRESS() 语法

这里是 MySQL COMPRESS() 函数的语法:

COMPRESS(str)

参数

  • str

    必需的。一个要压缩的字符串。

返回值

MySQL COMPRESS() 函数对指定的字符串 str 进行压缩,并将压缩结果作为二进制字符串返回。

如果参数为 NULL,MySQL COMPRESS() 函数返回 NULL

COMPRESS() 示例

要压缩字符串 hello,请使用如下语句:

SELECT COMPRESS('hello'), LENGTH(COMPRESS('hello'));
+--------------------------------------+---------------------------+
| COMPRESS('hello')                    | LENGTH(COMPRESS('hello')) |
+--------------------------------------+---------------------------+
| 0x05000000789CCB48CDC9C90700062C0215 |                        17 |
+--------------------------------------+---------------------------+

这里, 输出显示的是二进制字符串对应的十六进制的字符串。要禁用显示十六进制,请在登录时使用 --binary-as-hex=false 参数以禁用将二进制内容显示为十六进制。

这里使用了 LENGTH() 函数展示了压缩后的数据长度。

要压缩空字符串,请使用如下语句:

SELECT COMPRESS(''), LENGTH(COMPRESS(''));
+----------------------------+----------------------+
| COMPRESS('')               | LENGTH(COMPRESS('')) |
+----------------------------+----------------------+
| 0x                         |                    0 |
+----------------------------+----------------------+

从上面我们可以看出,很短的字符串压缩后的长度比原始字符串更长。让我们看一个压缩很长字符串的例子。在下面的例子中,我们使用 REPEAT() 函数构造了一个长度为 3000 字符串。

SELECT LENGTH(COMPRESS(REPEAT('abc', 1000)));
+---------------------------------------+
| LENGTH(COMPRESS(REPEAT('abc', 1000))) |
+---------------------------------------+
|                                    33 |
+---------------------------------------+

这里, REPEAT('abc', 1000) 返回了一个长度为 3000 的字符串,经过 MySQL COMPRESS() 压缩后,长度只有 33。

要计算一个压缩字符串的原始字符串的长度,请使用 UNCOMPRESSED_LENGTH() 函数。

SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('abc', 1000)));
+----------------------------------------------------+
| UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('abc', 1000))) |
+----------------------------------------------------+
|                                               3000 |
+----------------------------------------------------+

MD5() 函数

MySQLMD5()函数计算一个给定字符串的MD5摘要,并将结果作为一个32位的由十六进制字符组成的字符串返回。MD5()语法这里是MySQLMD5()函数的语法:MD5(str)参数str必需的。一个要计算MD5值的字符串。返回值MySQLMD5()函数返回指定字符串str的MD5摘要,它是一个3

MySQL MD5() 函数计算一个给定字符串的 MD5 摘要,并将结果作为一个 32 位的由十六进制字符组成的字符串返回。

MD5() 语法

这里是 MySQL MD5() 函数的语法:

MD5(str)

参数

  • str

    必需的。一个要计算 MD5 值的字符串。

返回值

MySQL MD5() 函数返回指定字符串 str 的 MD5 摘要,它是一个 32 位的由十六进制字符组成的字符串。

如果任意参数为 NULL,MySQL MD5() 函数返回 NULL

MD5() 示例

要计算字符串 hello 的 MD5 摘要,请使用如下语句:

SELECT MD5('hello');
+----------------------------------+
| MD5('hello')                     |
+----------------------------------+
| 5d41402abc4b2a76b9719d911017c592 |
+----------------------------------+

如果任意参数为 NULL,MySQL MD5() 函数返回 NULL

SELECT MD5(NULL);
+-----------+
| MD5(NULL) |
+-----------+
| NULL      |
+-----------+

RANDOM_BYTES() 函数

MySQLRANDOM_BYTES()函数随机生成一个指定长度的的二进制串。RANDOM_BYTES()语法这里是MySQLRANDOM_BYTES()函数的语法:RANDOM_BYTES(len)参数len必需的。一个要计算RANDOM_BYTES值的字符串。返回值MySQLRANDOM_BYTE

MySQL RANDOM_BYTES() 函数随机生成一个指定长度的的二进制串。

RANDOM_BYTES() 语法

这里是 MySQL RANDOM_BYTES() 函数的语法:

RANDOM_BYTES(len)

参数

  • len

    必需的。一个要计算 RANDOM_BYTES 值的字符串。

返回值

MySQL RANDOM_BYTES() 函数返回一个长度为 len 的由随机字节产生的字符串。

如果参数 lenNULL,MySQL RANDOM_BYTES() 函数返回 NULL

RANDOM_BYTES() 示例

要生成一个长度为 5 的随机二进制字符串,请使用如下语句:

SELECT RANDOM_BYTES(5);
+----------------------------------+
| RANDOM_BYTES(5)                  |
+----------------------------------+
| 0xD5F4AD1F00                     |
+----------------------------------+

注意,由于 RANDOM_BYTES() 返回一个随机字符串,因此,您的结果会不同。

如果任意参数为 NULL,MySQL RANDOM_BYTES() 函数返回 NULL

SELECT RANDOM_BYTES(NULL);
+----------------------------------------+
| RANDOM_BYTES(NULL)                     |
+----------------------------------------+
| NULL                                   |
+----------------------------------------+

SHA() 函数

MySQLSHA()函数计算并返回给定字符串的SHA-1160位校验和。SHA()函数与MD5()函数类似,也是一种计算摘要的函数。MySQLSHA()函数等效于SHA1()函数。SHA()语法这里是MySQLSHA()函数的语法:SHA(str)参数str必需的。一个要计算SHA-1160位校验和

MySQL SHA() 函数计算并返回给定字符串的 SHA-1 160 位校验和。 SHA() 函数与 MD5() 函数类似,也是一种计算摘要的函数。

MySQL SHA() 函数等效于 SHA1() 函数。

SHA() 语法

这里是 MySQL SHA() 函数的语法:

SHA(str)

参数

  • str

    必需的。一个要计算 SHA-1 160 位校验和的字符串。

返回值

MySQL SHA() 函数返回一个 40 位的由十六进制字符组成的字符串,它是指定字符串的 SHA-1 160 位校验和。

如果任意参数为 NULL,MySQL SHA() 函数返回 NULL

SHA() 示例

要计算字符串 hello 的 SHA-1 160 位校验和,请使用如下语句:

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

如果任意参数为 NULL,MySQL SHA() 函数返回 NULL

SELECT SHA(NULL);
+-----------+
| SHA(NULL) |
+-----------+
| NULL      |
+-----------+

SHA1() 函数

MySQLSHA1()函数计算并返回给定字符串的SHA-1160位校验和。SHA1()函数与MD5()函数类似,也是一种计算摘要的函数。MySQLSHA1()函数等效于SHA()函数。SHA1()语法这里是MySQLSHA1()函数的语法:SHA1(str)参数str必需的。一个要计算SHA-116

MySQL SHA1() 函数计算并返回给定字符串的 SHA-1 160 位校验和。 SHA1() 函数与 MD5() 函数类似,也是一种计算摘要的函数。

MySQL SHA1() 函数等效于 SHA() 函数。

SHA1() 语法

这里是 MySQL SHA1() 函数的语法:

SHA1(str)

参数

  • str

    必需的。一个要计算 SHA-1 160 位校验和的字符串。

返回值

MySQL SHA1() 函数返回一个 40 位的由十六进制字符组成的字符串,它是指定字符串的 SHA-1 160 位校验和。

如果任意参数为 NULL,MySQL SHA1() 函数返回 NULL

SHA1() 示例

要计算字符串 hello 的 SHA-1 160 位校验和,请使用如下语句:

SELECT SHA1('hello');
+------------------------------------------+
| SHA1('hello')                            |
+------------------------------------------+
| aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d |
+------------------------------------------+

如果任意参数为 NULL,MySQL SHA1() 函数返回 NULL

SELECT SHA1(NULL);
+------------+
| SHA1(NULL) |
+------------+
| NULL       |
+------------+

SHA2() 函数

MySQLSHA2()函数计算并返回给定字符串的SHA-2摘要,包括:SHA-224,SHA-256,SHA-384,和SHA-512算法。SHA2()函数与MD5()函数类似,也是一种计算摘要的函数。SHA2()语法这里是MySQLSHA2()函数的语法:SHA2(str,hash_length)

MySQL SHA2() 函数计算并返回给定字符串的 SHA-2 摘要,包括: SHA-224, SHA-256, SHA-384, 和 SHA-512 算法。

SHA2() 函数与 MD5() 函数类似,也是一种计算摘要的函数。

SHA2() 语法

这里是 MySQL SHA2() 函数的语法:

SHA2(str, hash_length)

参数

  • str

    必需的。一个要计算 SHA-2 校验和的字符串。

  • hash_length

    必需的。哈希长度,可用值包括 224, 256, 384, 5120 (相当于 256), 分别对应了 SHA-224, SHA-256, SHA-384, 和 SHA-512 算法。

返回值

MySQL SHA2() 函数返回一个由十六进制字符组成的字符串,它是指定字符串的 SHA-2 摘要。

如果任意参数为 NULL,MySQL SHA2() 函数返回 NULL

SHA2() 示例

要计算字符串 hello 的 SHA-224 摘要,请使用如下语句:

SELECT SHA2('hello', 224);
+----------------------------------------------------------+
| SHA2('hello', 224)                                       |
+----------------------------------------------------------+
| ea09ae9cc6768c50fcee903ed054556e5bfc8347907f12598aa24193 |
+----------------------------------------------------------+

要计算字符串 hello 的 SHA-256 摘要,请使用如下语句:

SELECT SHA2('hello', 256);
+------------------------------------------------------------------+
| SHA2('hello', 256)                                               |
+------------------------------------------------------------------+
| 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 |
+------------------------------------------------------------------+

要计算字符串 hello 的 SHA-384 摘要,请使用如下语句:

SELECT SHA2('hello', 384);
+--------------------------------------------------------------------------------------------------+
| SHA2('hello', 384)                                                                               |
+--------------------------------------------------------------------------------------------------+
| 59e1748777448c69de6b800d7a33bbfb9ff1b463e44354c3553bcdb9c666fa90125a3c79f90397bdf5f6a13de828684f |
+--------------------------------------------------------------------------------------------------+

要计算字符串 hello 的 SHA-512 摘要,请使用如下语句:

SELECT SHA2('hello', 512);
+----------------------------------------------------------------------------------------------------------------------------------+
| SHA2('hello', 512)                                                                                                               |
+----------------------------------------------------------------------------------------------------------------------------------+
| 9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043 |
+----------------------------------------------------------------------------------------------------------------------------------+

如果任意参数为 NULL,MySQL SHA2() 函数返回 NULL

SELECT SHA2(NULL);
+------------+
| SHA2(NULL) |
+------------+
| NULL       |
+------------+

STATEMENT_DIGEST() 函数

MySQLSTATEMENT_DIGEST()函数计算以字符串形式给定的SQL语句的语句摘要哈希值并返回。STATEMENT_DIGEST()语法这里是MySQLSTATEMENT_DIGEST()函数的语法:STATEMENT_DIGEST(sql_stmt)参数sql_stmt必需的。一个要计算

MySQL STATEMENT_DIGEST() 函数计算以字符串形式给定的 SQL 语句的语句摘要哈希值并返回。

STATEMENT_DIGEST() 语法

这里是 MySQL STATEMENT_DIGEST() 函数的语法:

STATEMENT_DIGEST(sql_stmt)

参数

  • sql_stmt

    必需的。一个要计算语句摘要哈希值的字符串。

返回值

MySQL STATEMENT_DIGEST() 函数返回以字符串形式给定的 SQL 语句的语句摘要哈希值。

如果任意参数为 NULL,MySQL STATEMENT_DIGEST() 函数返回 NULL

STATEMENT_DIGEST() 示例

要计算一个 SQL 语句的语句摘要,请使用如下语句:

SELECT STATEMENT_DIGEST('SELECT * FROM t WHERE a = 1');
+------------------------------------------------------------------+
| STATEMENT_DIGEST('SELECT * FROM t WHERE a = 1')                  |
+------------------------------------------------------------------+
| 3a0222e56763688b13e212d297c418e14f608bddaa590d0469de5bf0140b0504 |
+------------------------------------------------------------------+

如果任意参数为 NULL,MySQL STATEMENT_DIGEST() 函数返回 NULL

SELECT STATEMENT_DIGEST(NULL);
+------------------------+
| STATEMENT_DIGEST(NULL) |
+------------------------+
| NULL                   |
+------------------------+

STATEMENT_DIGEST_TEXT() 函数

MySQLSTATEMENT_DIGEST_TEXT()函数返回以字符串形式给定的SQL语句的规范语句摘要。STATEMENT_DIGEST_TEXT()语法这里是MySQLSTATEMENT_DIGEST_TEXT()函数的语法:STATEMENT_DIGEST_TEXT(sql_stmt)参数s

MySQL STATEMENT_DIGEST_TEXT() 函数返回以字符串形式给定的 SQL 语句的规范语句摘要。

STATEMENT_DIGEST_TEXT() 语法

这里是 MySQL STATEMENT_DIGEST_TEXT() 函数的语法:

STATEMENT_DIGEST_TEXT(sql_stmt)

参数

  • sql_stmt

    必需的。一个要计算规范语句摘要的字符串。

返回值

MySQL STATEMENT_DIGEST_TEXT() 函数返回以字符串形式给定的 SQL 语句的规范语句摘要。

如果任意参数为 NULL,MySQL STATEMENT_DIGEST_TEXT() 函数返回 NULL

STATEMENT_DIGEST_TEXT() 示例

要计算一个 SQL 语句的语句摘要,请使用如下语句:

SELECT STATEMENT_DIGEST_TEXT('SELECT * FROM t WHERE a = 1');
+------------------------------------------------------+
| STATEMENT_DIGEST_TEXT('SELECT * FROM t WHERE a = 1') |
+------------------------------------------------------+
| SELECT * FROM `t` WHERE `a` = ?                      |
+------------------------------------------------------+

如果任意参数为 NULL,MySQL STATEMENT_DIGEST_TEXT() 函数返回 NULL

SELECT STATEMENT_DIGEST_TEXT(NULL);
+-----------------------------+
| STATEMENT_DIGEST_TEXT(NULL) |
+-----------------------------+
| NULL                        |
+-----------------------------+

UNCOMPRESS() 函数

MySQLUNCOMPRESS()函数解压缩COMPRESS()函数压缩后的字符串。UNCOMPRESS()语法这里是MySQLUNCOMPRESS()函数的语法:UNCOMPRESS(str_to_uncompress)参数str_to_uncompress必需的。一个要解压缩的字符串。返回值My

MySQL UNCOMPRESS() 函数解压缩 COMPRESS() 函数压缩后的字符串。

UNCOMPRESS() 语法

这里是 MySQL UNCOMPRESS() 函数的语法:

UNCOMPRESS(str_to_uncompress)

参数

  • str_to_uncompress

    必需的。一个要解压缩的字符串。

返回值

MySQL UNCOMPRESS() 函数解压缩指定的字符串 str_to_uncompress,并将结果作为二进制字符串返回。

如果参数为 NULL,MySQL UNCOMPRESS() 函数返回 NULL

UNCOMPRESS() 示例

要解压缩 COMPRESS() 函数压缩后的字符串,请使用如下语句:

SELECT UNCOMPRESS(COMPRESS('hello'));
+-------------------------------+
| UNCOMPRESS(COMPRESS('hello')) |
+-------------------------------+
| hello                         |
+-------------------------------+

注意, mysql client 输出显示的是二进制字符串对应的十六进制的字符串。要显示原始字符串,请在登录时使用 --binary-as-hex=false 参数以禁用将二进制内容显示为十六进制。

如果参数为 NULL,MySQL UNCOMPRESS() 函数返回 NULL

SELECT UNCOMPRESS(NULL);
+------------------+
| UNCOMPRESS(NULL) |
+------------------+
| NULL             |
+------------------+

UNCOMPRESSED_LENGTH() 函数

MySQLUNCOMPRESSED_LENGTH()函数返回一个压缩的字符串的原始字符串的长度。UNCOMPRESSED_LENGTH()语法这里是MySQLUNCOMPRESSED_LENGTH()函数的语法:UNCOMPRESSED_LENGTH(compressed_str)参数compres

MySQL UNCOMPRESSED_LENGTH() 函数返回一个压缩的字符串的原始字符串的长度。

UNCOMPRESSED_LENGTH() 语法

这里是 MySQL UNCOMPRESSED_LENGTH() 函数的语法:

UNCOMPRESSED_LENGTH(compressed_str)

参数

  • compressed_str

    必需的。一个使用 COMPRESS() 函数压缩后的字符串。

返回值

MySQL UNCOMPRESSED_LENGTH() 函数返回一个压缩的字符串的原始字符串的长度。

如果参数为 NULL,MySQL UNCOMPRESSED_LENGTH() 函数返回 NULL

UNCOMPRESSED_LENGTH() 示例

要返回使用 COMPRESS() 函数压缩的字符串的原始字符串的长度,请使用如下语句:

set @compressed = COMPRESS('hello');
SELECT UNCOMPRESSED_LENGTH(@compressed);
+----------------------------------+
| UNCOMPRESSED_LENGTH(@compressed) |
+----------------------------------+
|                                5 |
+----------------------------------+
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员zhi路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值