try_aes_decrypt
-functie
Van toepassing op: Databricks SQL
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 optioneleSTRING
expressie die geverifieerde aanvullende gegevens (AAD) biedt inGCM
de modus. Moet overeenkomen met deaad
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-12824
: AES-19232
: 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