مشاركة عبر


try_aes_decrypt دالة

ينطبق على: وضع علامة Databricks SQL وضع علامة Databricks Runtime 13.3 LTS وما فوق

فك تشفير ثنائي تم إنتاجه باستخدام تشفير AES وإرجاع NULL إذا فشل ذلك لأي سبب من الأسباب.

بناء الجملة

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

الوسيطات

  • expr: التعبير BINARY المراد فك تشفيره.
  • key: تعبير ثنائي. يجب أن يتطابق مع المفتاح المستخدم في الأصل لإنتاج القيمة المشفرة وأن يكون طوله 16 أو 24 أو 32 بايت.
  • mode: تعبير STRING اختياري يصف وضع التشفير المستخدم لإنتاج القيمة المشفرة.
  • padding: تعبير STRING اختياري يصف كيفية معالجة التشفير ترك مساحة للقيمة إلى طول المفتاح.
  • aad: تعبير اختياري STRING يوفر بيانات إضافية مصادق عليها (AAD) في GCM الوضع. يجب أن تتطابق مع aad المستخدمة لإنتاج القيمة المشفرة. ينطبق على Databricks SQL وDatabricks Runtime 13.3 LTS وما فوق.

المرتجعات

ثنائي.

mode يجب أن يكون واحدا من (غير حساس لحالة الأحرف):

  • 'ECB': استخدام وضع دفتر التعليمات البرمجية الإلكتروني (ECB ).
  • 'GCM': استخدم Galois/Counter Mode (GCM) . هذا هو الوضع الافتراضي.

padding يجب أن يكون واحدا من (غير حساس لحالة الأحرف):

  • 'NONE': لا يستخدم أي ترك مساحة. صالح فقط ل 'GCM'.
  • 'PKCS': يستخدم ترك مساحة مساحة معايير تشفير المفتاح العام (PKCS ). صالح فقط ل 'ECB'.
  • 'DEFAULT': يستخدم 'NONE' لوضع 'GCM' 'ECB' و'PKCS'.

تعتمد الخوارزمية على طول المفتاح:

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

لرفع الأخطاء بدلا من NULL في حالة حالات الخطأ، استخدم try_aes_decrypt.

الأمثلة

> 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