Compartir vía


Función aes_encrypt

Se aplica a: casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 10.4 LTS y versiones posteriores

Cifra un archivo binario mediante el cifrado AES.

Sintaxis

aes_encrypt(expr, key [, mode [, padding[, iv[, aad]]]])

Argumentos

  • expr: La expresión BINARY que será cifrada.
  • key: expresión BINARY. Es la clave que se va a usar para cifrar expr. Debe tener una longitud de 16, 24 o 32 bytes.
  • mode: Una expresión opcional STRING que describe el modo de cifrado.
  • padding: Una expresión opcional STRING que describe cómo el cifrado controla el relleno del valor de la longitud de la clave.
  • iv:Una expresión opcional STRING que proporciona un vector de inicialización (VI) para los modos GCM o CBC. Se aplica a Databricks SQL y Databricks Runtime 13.3 LTS y versiones posteriores.
  • aad: Una expresión opcional STRING que proporciona datos adicionales autenticados (DAA) en modo GCM. Se aplica a Databricks SQL y Databricks Runtime 13.3 LTS y versiones posteriores.

Devoluciones

BINARY.

mode debe ser uno de los siguientes (no se distingue entre mayúsculas y minúsculas):

  • 'CBC': use el modo de Encadenamiento de bloques de cifrado (CBC). Se aplica a Databricks SQL, Databricks Runtime 13.3 LTS y versiones posteriores.
  • 'ECB': use el modo Electronic CodeBook (ECB).
  • 'GCM': use Galois/Counter (GCM) Mode. Este es el valor predeterminado.

padding debe ser uno de los siguientes (no se distingue entre mayúsculas y minúsculas):

  • 'NONE': no usa relleno. Solo es válido con 'GCM'.
  • 'PKCS': usa el relleno de Public Key Cryptography Standards (PKCS). Solo es válido para 'ECB' y 'CBC'. El relleno de PKCS agrega entre 1 y el número de bytes de la longitud de la clave para rellenar expr con un múltiplo de la longitud de key. El valor de cada byte de relleno es el número de bytes que se rellenan.
  • 'DEFAULT': usa 'NONE' para 'GCM' y 'PKCS' para 'ECB' y el modo 'CBC'.

iv, cuando se especifica, debe tener un largo de 12 bytes para GCM y 16 bytes para CBC.

El algoritmo depende de la longitud de la clave:

  • 16: AES-128
  • 24: AES-192
  • 32: AES-256

Ejemplos

> SELECT base64(aes_encrypt('Spark', 'abcdefghijklmnop'));
  4A5jOAh9FNGwoMeuJukfllrLdHEZxA2DyuSQAWz77dfn

> SELECT cast(aes_decrypt(unbase64('4A5jOAh9FNGwoMeuJukfllrLdHEZxA2DyuSQAWz77dfn'),
                          'abcdefghijklmnop') AS STRING);
  Spark

> SELECT base64(aes_encrypt('Spark SQL', '1234567890abcdef', 'ECB', 'PKCS'));
  3lmwu+Mw0H3fi5NDvcu9lg==

> SELECT cast(aes_decrypt(unbase64('3lmwu+Mw0H3fi5NDvcu9lg=='),
                          '1234567890abcdef', 'ECB', 'PKCS') AS STRING);
  Spark SQL

> SELECT base64(aes_encrypt('Spark SQL', '1234567890abcdef', 'GCM'));
  2sXi+jZd/ws+qFC1Tnzvvde5lz+8Haryz9HHBiyrVohXUG7LHA==

> SELECT cast(aes_decrypt(unbase64('2sXi+jZd/ws+qFC1Tnzvvde5lz+8Haryz9HHBiyrVohXUG7LHA=='),
                          '1234567890abcdef', 'GCM') AS STRING);
  Spark SQL

> SELECT base64(aes_encrypt('Spark SQL', '1234567890abcdef', 'GCM', 'DEFAULT', '123456789012', 'Some AAD'));
  MTIzNDU2Nzg5MDEyMdXvR41sJqwZ6hnTU8FRTTtXbL8yeChIZA==

> SELECT cast(aes_decrypt(unbase64('MTIzNDU2Nzg5MDEyMdXvR41sJqwZ6hnTU8FRTTtXbL8yeChIZA=='),
                          '1234567890abcdef', 'GCM', 'DEFAULT', 'Some AAD') AS STRING);
  Spark SQL