Delen via


aes_decrypt-functie

Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 10.4 LTS en hoger

Ontsleutelt een binair bestand dat wordt geproduceerd met behulp van AES-versleuteling.

Syntaxis

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

Argumenten

  • expr: De BINARY expressie die moet worden ontsleuteld.
  • key: Een BINARY expressie. Moet overeenkomen met de sleutel die oorspronkelijk is gebruikt om de versleutelde waarde te produceren en 16, 24 of 32 bytes lang te zijn.
  • mode: Een optionele STRING expressie die de versleutelingsmodus beschrijft die wordt gebruikt om de versleutelde waarde te produceren.
  • padding: Een optionele STRING expressie die beschrijft hoe versleuteling de opvulling van de waarde naar sleutellengte heeft verwerkt.
  • aad: Een optionele STRING expressie die geverifieerde aanvullende gegevens (AAD) biedt in GCM de modus. Moet overeenkomen met de aad gebruikte waarde om de versleutelde waarde te produceren. Is van toepassing op Databricks SQL en Databricks Runtime 13.3 LTS en hoger.

Retouren

EEN BINAIR.

mode moet een van de volgende zijn (hoofdlettergevoelig):

  • 'CBC': De CBC-modus (Cipher-Block Chaining) gebruiken. Van toepassing op Databricks SQL, Databricks Runtime 13.3 LTS en hoger.
  • 'ECB': Gebruik de modus Electronic CodeBook (ECB).
  • 'GCM': Galois/Counter Mode (GCM) gebruiken. Dit is de standaardinstelling.

padding moet een van de volgende zijn (hoofdlettergevoelig):

  • 'NONE': gebruikt geen opvulling. Alleen geldig voor 'GCM'.
  • 'PKCS': Maakt gebruik van PKCS-opvulling (Public Key Cryptography Standards). Alleen geldig voor 'ECB' en 'CBC'.
  • 'DEFAULT': Gebruikt 'NONE' voor 'GCM' en voor 'ECB' en 'CBC' 'PKCS' modus.

Het algoritme is afhankelijk van de lengte van de sleutel:

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

NULL Gebruik in plaats daarvan try_aes_decrypt

Voorbeelden

> 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