AES_ENCRYPT
Синтаксис
AES_ENCRYPT(str,key_str)
AES_ENCRYPT(str, key, [, iv [, mode]])
Описание
AES_ENCRYPT() и AES_DECRYPT() позволяют шифровать и расшифровывать данные с использованием официального алгоритма AES (Advanced Encryption Standard), ранее известного как «Rijndael». Используется кодирование с длиной ключа 128 бит (с MariaDB 11.2.0, это значение по умолчанию и может быть изменено). 128 бит значительно быстрее и достаточно безопасно для большинства задач.
AES_ENCRYPT() шифрует строку str с использованием ключа key_str и возвращает двоичную строку.
AES_DECRYPT() расшифровывает зашифрованную строку и возвращает исходную строку.
Входные аргументы могут иметь любую длину. Если любой из аргументов равен NULL, результат этой функции также NULL.
Поскольку AES — это алгоритм на уровне блоков, для кодирования строк с неравномерной длиной используется заполнение, и поэтому длина результирующей строки может быть вычислена с помощью этой формулы:
16 x (trunc(string_length / 16) + 1)
Если AES_DECRYPT() обнаруживает некорректные данные или неправильное заполнение, он возвращает NULL. Однако AES_DECRYPT() может вернуть значение, отличное от NULL (возможно, мусор), если входные данные или ключ некорректны.
Начиная с MariaDB 11.2, функция поддерживает вектор инициализации и управление режимом шифрования блоков. Режим по умолчанию определяется системной переменной block_encryption_mode, которая может быть изменена при вызове функции с режимом. mode — это aes-{128,192,256}-{ecb,cbc,ctr}, например: "AES-128-cbc".
AES_ENCRYPT(str, key) больше не может использоваться в постоянных виртуальных столбцах (и т.п.).
Примеры
INSERT INTO t VALUES (AES_ENCRYPT('text',SHA2('password',512)));
От MariaDB 11.2.0:
SELECT HEX(AES_ENCRYPT('foo', 'bar', '0123456789abcdef', 'aes-256-cbc')) AS x;
+----------------------------------+
| x |
+----------------------------------+
| 42A3EB91E6DFC40A900D278F99E0726E |
+----------------------------------+
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/aes_encrypt/