Condividi tramite


Funzione aes_decrypt

Si applica a: segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 10.4 LTS e versioni successive

Decrittografa un file binario generato usando la crittografia AES.

Sintassi

aes_decrypt(expr, key [, mode [, padding [, aad]]])

Argomenti

  • exprBINARY: espressione da decrittografare.
  • key: un’espressione BINARY. Deve corrispondere alla chiave usata originariamente per produrre il valore crittografato e avere una lunghezza di 16, 24 o 32 byte.
  • mode: espressione facoltativa STRING che descrive la modalità di crittografia usata per produrre il valore crittografato.
  • padding: espressione facoltativa STRING che descrive come la spaziatura interna gestita dalla crittografia del valore alla lunghezza della chiave.
  • aad: espressione facoltativa STRING che fornisce dati aggiuntivi autenticati (AAD) in GCM modalità. Deve corrispondere all'oggetto aad utilizzato per produrre il valore crittografato. Si applica a Databricks SQL e Databricks Runtime 13.3 LTS e versioni successive.

Valori restituiti

BINARIO.

mode deve essere uno di (senza distinzione tra maiuscole e minuscole):

  • 'CBC': usare la modalità CBC (Cipher-Block Chaining). Si applica a Databricks SQL, Databricks Runtime 13.3 LTS e versioni successive.
  • 'ECB': utilizzare la modalità Electronic CodeBook (BCE).
  • 'GCM': usare galois/modalità contatore (GCM). Si tratta dell'impostazione predefinita.

padding deve essere uno di (senza distinzione tra maiuscole e minuscole):

  • 'NONE': non usa spaziatura interna. Valido solo per 'GCM'.
  • 'PKCS': usa spaziatura interna PKCS (Public Key Cryptography Standards). Valido solo per 'ECB' e 'CBC'.
  • 'DEFAULT': usa 'NONE' per 'GCM' e 'PKCS' per 'ECB' e 'CBC' la modalità .

L'algoritmo dipende dalla lunghezza della chiave:

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

Per tollerare eventuali condizioni di errore risultanti dalla decrittografia e restituire NULL invece usare try_aes_decrypt

Esempi

> 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

-- try_aes_decrypt tolerates an error where aes_decrypt does not.
> SELECT cast(aes_decrypt(x'1234567890abcdef1234567890abcdef', '1234567890abcdef', 'GCM') AS STRING);
  Error: INVALID_PARAMETER_VALUE.AES_KEY

> SELECT cast(try_aes_decrypt(x'1234567890abcdef1234567890abcdef', '1234567890abcdef', 'GCM') AS STRING);
  NULL

> SELECT base64(aes_encrypt('Apache Spark', '0000111122223333', 'CBC', 'PKCS'));
  U2FsdGVkX1/ERGxwEOTDpDD4bQvDtQaNe+gXGudCcUk=

> SELECT cast(aes_decrypt(unbase64('OkzJi9oaiKJtTMmOrFjH2QWJZYF1UwT+4cA2008LlHA='), '0000111122223333', 'CBC', 'PKCS') AS STRING);
  Apache Spark

> 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