Aracılığıyla paylaş


aes_decrypt işlevi

Şunlar için geçerlidir: onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 10.4 LTS ve üzeri

AES şifrelemesi kullanılarak üretilen ikili dosyanın şifresini çözer.

Söz dizimi

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

Bağımsız değişkenler

  • expr: Şifresi BINARY çözülecek ifade.
  • key: İfade BINARY . Şifrelenmiş değeri üretmek için ilk olarak kullanılan anahtarla eşleşmeli ve 16, 24 veya 32 bayt uzunluğunda olmalıdır.
  • mode: Şifrelenmiş değeri üretmek için kullanılan şifreleme modunu açıklayan isteğe bağlı STRING bir ifade.
  • padding: Şifrelemenin değerin anahtar uzunluğuna doldurmasını nasıl işlediğini açıklayan isteğe bağlı STRING ifade.
  • aad: Modda kimliği doğrulanmış ek veriler (AAD) GCM sağlayan isteğe bağlı STRING bir ifade. Şifrelenmiş değeri üretmek için kullanılanla eşleşmelidir aad . Databricks SQL ve Databricks Runtime 13.3 LTS ve üzeri için geçerlidir.

Döndürülenler

İKILI.

mode (büyük/küçük harfe duyarsız) biri olmalıdır:

  • 'CBC': Şifreleme Bloğu Zincirleme (CBC) modunu kullanın. Databricks SQL, Databricks Runtime 13.3 LTS ve üzeri için geçerlidir.
  • 'ECB': Elektronik CodeBook (ECB) modunu kullanın.
  • 'GCM': Galois/Counter Mode (GCM) kullanın. Bu varsayılan seçenektir.

padding (büyük/küçük harfe duyarsız) biri olmalıdır:

  • 'NONE': Doldurma kullanmaz. Yalnızca için 'GCM'geçerlidir.
  • 'PKCS': Ortak Anahtar Şifreleme Standartları (PKCS) doldurmayı kullanır. Yalnızca ve 'CBC'için 'ECB' geçerlidir.
  • 'DEFAULT': ve için 'GCM' ve 'PKCS' 'ECB' 'CBC' modunu kullanır.'NONE'

Algoritma, anahtarın uzunluğuna bağlıdır:

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

Şifre çözmeden kaynaklanan hata koşullarını tolere etmek ve bunun yerine geri dönmek NULL için try_aes_decrypt

Örnekler

> 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 aes_decrypt(unbase64('U2FsdGVkX1/ERGxwEOTDpDD4bQvDtQaNe+gXGudCcUk='), '0000111122223333', 'CBC', 'PKCS');
  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