Funktionen aes_encrypt
Gäller för: Databricks SQL Databricks Runtime 10.4 LTS och senare
Krypterar en binär fil med hjälp av AES-kryptering.
Syntax
aes_encrypt(expr, key [, mode [, padding[, iv[, aad]]]])
Argument
expr
: UttrycketBINARY
som ska krypteras.key
: EttBINARY
uttryck. Nyckeln som ska användas för att krypteraexpr
. Den måste vara 16, 24 eller 32 byte lång.mode
: Ett valfrittSTRING
uttryck som beskriver krypteringsläget.padding
: Ett valfrittSTRING
uttryck som beskriver hur kryptering hanterar utfyllnad av värdet till nyckellängd.iv
: Ett valfrittSTRING
uttryck som tillhandahåller en initieringsvektor (IV) förGCM
ellerCBC
lägen. Gäller för Databricks SQL och Databricks Runtime 13.3 LTS och senare.aad
: Ett valfrittSTRING
uttryck som tillhandahåller autentiserade ytterligare data (AAD) iGCM
läge. Gäller för Databricks SQL och Databricks Runtime 13.3 LTS och senare.
Returer
En BINARY
.
mode
måste vara något av (skiftlägesokänsligt):
'CBC'
: Använd CBC-läge (Cipher-Block Chaining). Gäller för Databricks SQL, Databricks Runtime 13.3 LTS och senare.'ECB'
: Använd läget Electronic CodeBook (ECB).'GCM'
: Använd Galois/Counter Mode (GCM). Det här är standardinställningen.
padding
måste vara något av (skiftlägesokänsligt):
'NONE'
: Använder ingen utfyllnad. Endast giltigt för'GCM'
.'PKCS'
: Använder PKCS-utfyllnad (Public Key Cryptography Standards). Endast giltigt för'ECB'
och'CBC'
. PKCS-utfyllnad lägger till mellan 1 och nyckellängds antal byte att fyllaexpr
till en multipel avkey
längden. Värdet för varje pad byte är antalet byte som vadderas.'DEFAULT'
: Använder'NONE'
för'GCM'
och'PKCS'
för'ECB'
, och'CBC'
läge.
iv
, när det anges, måste vara 12 byte långt för GCM
och 16 byte för CBC
.
Algoritmen beror på nyckelns längd:
16
: AES-12824
: AES-19232
: AES-256
Exempel
> 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