Последнее обновление
AES_DECRYPT
Описание
Функция расшифрования AES. Эта функция работает так же, как функция AES_DECRYPT в MySQL. По умолчанию используется алгоритм AES_128_ECB и режим дополнения PKCS7.
Синтаксис
AES_DECRYPT( <str>, <key_str>[, <init_vector>][, <encryption_mode>])
Параметры
| параметр | описание |
|---|---|
<str> | Текст для расшифрования |
<key_str> | Ключ. Обратите внимание: ключ задаётся строкой в определённой кодировке, а не шестнадцатеричным представлением. Например, при шифровании с 128-битным ключом длина key_str должна составлять 16. Если длина ключа недостаточна, используйте дополнение нулями до нужной длины. Если длина превышает требуемую, используйте циклическую операцию XOR для получения итогового ключа. Например, если используемый алгоритмом 128-битный ключ обозначен как key, то key[i] = key_str[i] ^ key_str[i+128] ^ key_str[i+256] ^ ... |
<init_vector> | Вектор инициализации, используемый в алгоритме. Применяется только в определённых алгоритмах. Если не указан, Doris использует встроенный вектор |
<encryption_mode> | Алгоритм шифрования. Возможные значения заданы в переменных |
Возвращаемое значение
При успешном расшифровании: возвращает расшифрованные данные, обычно двоичное представление открытого текста.
При ошибке расшифрования: возвращает NULL.
Примеры
Успешное расшифрование
Использование алгоритма по умолчанию
set block_encryption_mode='';
select aes_decrypt(from_base64('wr2JEDVXzL9+2XtRhgIloA=='),'F3229A0B371ED2D9441B830D21A390C3');
+--------------------------------------------------------------------------------+
| aes_decrypt(from_base64('wr2JEDVXzL9+2XtRhgIloA=='), '***', '', 'AES_128_ECB') |
+--------------------------------------------------------------------------------+
| text |
+--------------------------------------------------------------------------------+
Использование алгоритма AES_256_CBC
set block_encryption_mode="AES_256_CBC";
select aes_decrypt(from_base64('3dym0E7/+1zbrLIaBVNHSw=='),'F3229A0B371ED2D9441B830D21A390C3');
+--------------------------------------------------------------------------------+
| aes_decrypt(from_base64('3dym0E7/+1zbrLIaBVNHSw=='), '***', '', 'AES_256_CBC') |
+--------------------------------------------------------------------------------+
| text |
+--------------------------------------------------------------------------------+
Использование алгоритма AES_256_CBC с заданным вектором инициализации
select AES_DECRYPT(FROM_BASE64('tsmK1HzbpnEdR2//WhO+MA=='),'F3229A0B371ED2D9441B830D21A390C3', '0123456789');
+------------------------------------------------------------------------------------------+
| aes_decrypt(from_base64('tsmK1HzbpnEdR2//WhO+MA=='), '***', '0123456789', 'AES_256_CBC') |
+------------------------------------------------------------------------------------------+
| text |
+------------------------------------------------------------------------------------------+
Ошибка расшифрования
select AES_DECRYPT(FROM_BASE64('tsmK1H3zbpnEdR2//WhO+MA=='),'F3229A0B371ED2D9441B830D21A390C3', '0123456789');
+-------------------------------------------------------------------------------------------+
| aes_decrypt(from_base64('tsmK1H3zbpnEdR2//WhO+MA=='), '***', '0123456789', 'AES_256_CBC') |
+-------------------------------------------------------------------------------------------+
| NULL |
+-------------------------------------------------------------------------------------------+