aes_decrypt وظيفه

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

فك تشفير ثنائي تم إنتاجه باستخدام تشفير AES.

بناء الجملة

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

الوسيطات

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

المرتجعات

ثنائي.

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

  • 'CBC': استخدم وضع تسلسل كتلة التشفير (CBC ). ينطبق على Databricks SQL وDatabricks Runtime 13.3 LTS وما فوق.
  • 'ECB': استخدام وضع دفتر التعليمات البرمجية الإلكتروني (ECB ).
  • 'GCM': استخدم Galois/Counter Mode (GCM) . هذا هو الوضع الافتراضي.

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

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

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

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

للتسامح مع أي حالات خطأ ناتجة عن فك التشفير والعودة NULL بدلا من ذلك استخدم try_aes_decrypt

الأمثلة

> 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