aes_encrypt
-functie
Van toepassing op: Databricks SQL Databricks Runtime 10.4 LTS en hoger
Hiermee wordt een binair bestand versleuteld met behulp van AES-versleuteling.
Syntaxis
aes_encrypt(expr, key [, mode [, padding[, iv[, aad]]]])
Argumenten
expr
: DeBINARY
expressie die moet worden versleuteld.key
: EenBINARY
expressie. De sleutel die moet worden gebruikt om te versleutelenexpr
. Het moet 16, 24 of 32 bytes lang zijn.mode
: Een optioneleSTRING
expressie die de versleutelingsmodus beschrijft.padding
: Een optioneleSTRING
expressie die beschrijft hoe versleuteling de opvulling van de waarde naar sleutellengte verwerkt.iv
: Een optioneleSTRING
expressie die een initialisatievector (IV) voorGCM
ofCBC
modi biedt. Is van toepassing op Databricks SQL en Databricks Runtime 13.3 LTS en hoger.aad
: Een optioneleSTRING
expressie die geverifieerde aanvullende gegevens (AAD) biedt inGCM
de modus. Is van toepassing op Databricks SQL en Databricks Runtime 13.3 LTS en hoger.
Retouren
A BINARY
.
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'
. PKCS-opvulling voegt tussen 1 en sleutellengte aantal bytes toe aan een veelvoudexpr
aankey
lengte. De waarde van elke pad-byte is het aantal bytes dat wordt opgevuld.'DEFAULT'
: Gebruikt'NONE'
voor'GCM'
en'PKCS'
voor'ECB'
en'CBC'
modus.
iv
, indien opgegeven, moet 12-bytes lang zijn voor GCM
en 16 bytes voor CBC
.
Het algoritme is afhankelijk van de lengte van de sleutel:
16
: AES-12824
: AES-19232
: AES-256
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
> 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