Aracılığıyla paylaş


try_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 13.3 LTS ve üzeri

AES şifrelemesi kullanılarak üretilen ikili dosyanın şifresini çözer ve herhangi bir nedenle başarısız olursa NULL döndürür.

Söz dizimi

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

Bağımsız değişkenler

  • expr: Şifresi çözülecek BINARY ifadesi.
  • key: binary ifadesi. Ş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ı BIR STRING ifadesi.
  • padding: Şifrelemenin değerin anahtar uzunluğuna doldurmasını nasıl işlediğini açıklayan isteğe bağlı BIR STRING ifadesi.
  • 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:

  • '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 için 'ECB'geçerlidir.
  • 'DEFAULT': ve 'GCM' 'PKCS' modunu 'ECB' kullanır'NONE'.

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

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

Hata koşulları yerine NULL hataları yükseltmek için try_aes_decrypt kullanın.

Örnekler

> 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