try_aes_decrypt-functie

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

Ontsleutelt een binair bestand dat wordt geproduceerd met behulp van AES-versleuteling en retourneert NULL als dat om welke reden dan ook mislukt.

Syntaxis

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

Argumenten

  • expr: de BINAIRE 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 TEKENREEKS-expressie die de versleutelingsmodus beschrijft die wordt gebruikt om de versleutelde waarde te produceren.
  • padding: Een optionele TEKENREEKS-expressie die beschrijft hoe versleuteling de opvulling van de waarde heeft verwerkt tot sleutellengte.
  • 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):

  • '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'.
  • 'DEFAULT': Gebruikt 'NONE' voor 'GCM' en 'PKCS' voor 'ECB' de modus.

Het algoritme is afhankelijk van de lengte van de sleutel:

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

Als u fouten wilt genereren in plaats van NULL in het geval van foutvoorwaarden, gebruikt u try_aes_decrypt.

Voorbeelden

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

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

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

> SELECT cast(try_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==

-- 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('Spark SQL', '1234567890abcdef', 'GCM', 'DEFAULT', '123456789012', 'Some AAD'));
  MTIzNDU2Nzg5MDEyMdXvR41sJqwZ6hnTU8FRTTtXbL8yeChIZA==

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