Função aes_encrypt

Aplica-se a:verificação marcada como sim SQL do Databricks marca de seleção positiva Databricks Runtime 10.4 LTS e versões posteriores

Criptografa um binário usando a criptografia AES.

Sintaxe

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

Argumentos

  • expr: A expressão BINARY a ser criptografada.
  • key: uma expressão BINARY. A chave a ser usada para criptografar expr. Ela deve ter 16, 24 ou 32 bytes de comprimento.
  • mode: Uma expressão opcional STRING que descreve o modo de criptografia.
  • padding: Uma expressão opcional STRING que descreve como a criptografia lida com o preenchimento do valor para o comprimento da chave.
  • iv: Uma expressão opcional STRING que fornece um vetor de inicialização (IV) para GCM ou CBC modos. Aplica-se ao Databricks SQL e Databricks Runtime 13.3 LTS e superior.
  • aad: Uma expressão opcional STRING que fornece dados adicionais autenticados (AAD) no modo GCM. Aplica-se ao Databricks SQL e Databricks Runtime 13.3 LTS e superior.

Retornos

Um BINARY.

mode precisa ser um dos seguintes (não diferencia maiúsculas de minúsculas):

  • 'CBC': use o modo CBC (Encadeamento de Blocos de Criptografia). Aplica-se ao Databricks SQL, Databricks Runtime 13.3 LTS e versões superiores.
  • 'ECB': use o modo ECB (CodeBook Eletrônico).
  • 'GCM': use o Modo GCM (Galois/Contador). Esse é o padrão.

padding precisa ser um dos seguintes (não diferencia maiúsculas de minúsculas):

  • 'NONE': não usa preenchimento. Válido somente para 'GCM'.
  • 'PKCS': usa o preenchimento PKCS (Padrões de Criptografia por Chave Pública). Válido somente para 'ECB' e 'CBC'. O preenchimento PKCS adiciona entre 1 e o número de bytes de comprimento de chave para preencher expr a um múltiplo de comprimento key. O valor de cada byte de preenchimento é o número de bytes que estão sendo preenchidos.
  • 'DEFAULT': usa 'NONE' para 'GCM' e 'PKCS' para 'ECB' e modo 'CBC'.

iv, quando especificado, deve ter 12 bytes de comprimento para GCM e 16 bytes para CBC.

O algoritmo depende do comprimento da chave:

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

Exemplos

> 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