详解MySQL的AES_ENCRYPT()函数:加密字符串

  • Post category:MySQL

MySQL的AES_ENCRYPT()函数是一种加密函数,用于加密字符串和二进制数据。该函数使用AES算法加密数据,支持128,192和256位密钥长度。

下面是使用AES_ENCRYPT()函数的一些要点和示例说明:

语法

AES_ENCRYPT(str, key);

参数说明

  • str:表示需要加密的字符串或二进制数据。
  • key:表示用于加密数据的密钥。密钥的长度必须是128,192或256位之一。

返回值

AES_ENCRYPT()函数返回加密后的二进制数据。

示例说明

示例一

以下是一个使用AES_ENCRYPT()函数对文本进行加密的示例:

SELECT AES_ENCRYPT('Hello, world!', 'secret');

结果:

+--------------------------------------------------------+
| AES_ENCRYPT('Hello, world!', 'secret')                 |
+--------------------------------------------------------+
| 0x2B22A8716F9DB689C5ECA1D025727B41A6FC5D6AAD63E57F1AA6 |
+--------------------------------------------------------+

该示例将“Hello, world!”字符串使用密钥“secret”加密,返回加密后的二进制数据。

示例二

以下是一个使用AES_ENCRYPT()函数对二进制数据进行加密的示例:

SELECT AES_ENCRYPT(UNHEX('48656C6C6F2C20776F726C6421'), UNHEX('736563726574'));

结果:

+---------------------------------------------------------------------------+
| AES_ENCRYPT(UNHEX('48656C6C6F2C20776F726C6421'), UNHEX('736563726574')) |
+---------------------------------------------------------------------------+
| 0x92FB9E0D0E70C504808CC139B2CE4C4D                                  |
+---------------------------------------------------------------------------+

该示例将“Hello, world!”(转换为二进制数据)使用密钥“secret”加密,返回加密后的二进制数据。

注意事项

  • 密钥必须是具有128,192或256位长度之一的字符串或二进制数据。可以使用UNHEX()函数将十六进制字符串转换为二进制数据。

  • 使用AES_ENCRYPT()函数加密数据后,您需要使用AES_DECRYPT()函数将其解密。