이는 동일한 작업을 수행하지만 암호 해독을 수행할 수 없는 경우 오류를 발생시키는 대신 NULL 값을 반환하는 특수 버전 aes_decrypt 입니다. 와 함께 AES mode 를 사용하는 암호 해독된 값을 input 반환합니다padding. 16비트, 24비트, 32비트 키 길이가 지원됩니다. (mode, padding)의 지원되는 조합은 (ECB, ), PKCS(GCM, NONE) 및 (CBC, PKCS)입니다. 선택적으로 추가 인증된 데이터(AAD)는 GCM에 대해서만 지원됩니다. 암호화를 위해 제공된 경우 암호 해독을 위해 동일한 AAD 값을 제공해야 합니다. 기본 모드는 GCM입니다.
문법
from pyspark.sql import functions as sf
sf.try_aes_decrypt(input, key, mode=None, padding=None, aad=None)
매개 변수
| 매개 변수 | 유형 | Description |
|---|---|---|
input |
pyspark.sql.Column 또는 str |
암호 해독할 이진 값입니다. |
key |
pyspark.sql.Column 또는 str |
데이터 암호를 해독하는 데 사용할 암호입니다. |
mode |
pyspark.sql.Column 또는 str, 선택 사항 |
메시지 암호를 해독하는 데 사용해야 하는 암호 차단 모드를 지정합니다. 유효한 모드: ECB, GCM, CBC. |
padding |
pyspark.sql.Column 또는 str, 선택 사항 |
길이가 블록 크기의 배수가 아닌 메시지를 패딩하는 방법을 지정합니다. 유효한 값: PKCS, NONE, DEFAULT. DEFAULT 패딩은 ECB용 PKCS, GCM의 경우 NONE, CBC용 PKCS를 의미합니다. |
aad |
pyspark.sql.Column 또는 str, 선택 사항 |
선택적 추가 인증된 데이터입니다. GCM 모드에서만 지원됩니다. 이 입력은 자유 형식 입력일 수 있으며 암호화 및 암호 해독 모두에 대해 제공해야 합니다. |
Returns
pyspark.sql.Column: 암호 해독된 값 또는 NULL 값을 포함하는 새 열입니다.
예시
예제 1: 키, 모드, 안쪽 여백 및 aad를 사용하여 데이터 암호 해독
from pyspark.sql import functions as sf
df = spark.createDataFrame([(
"AAAAAAAAAAAAAAAAQiYi+sTLm7KD9UcZ2nlRdYDe/PX4",
"abcdefghijklmnop12345678ABCDEFGH", "GCM", "DEFAULT",
"This is an AAD mixed into the input",)],
["input", "key", "mode", "padding", "aad"]
)
df.select(sf.try_aes_decrypt(
sf.unbase64(df.input), df.key, "mode", df.padding, df.aad
).cast("STRING")).show(truncate=False)
+-------------------------------------------------------------------------+
|CAST(try_aes_decrypt(unbase64(input), key, mode, padding, aad) AS STRING)|
+-------------------------------------------------------------------------+
|Spark |
+-------------------------------------------------------------------------+
예제 2: 키, 모드, 안쪽 여백 및 aad를 사용하여 데이터의 암호를 해독하지 못했습니다.
from pyspark.sql import functions as sf
df = spark.createDataFrame([(
"AAAAAAAAAAAAAAAAQiYi+sTLm7KD9UcZ2nlRdYDe/PX4",
"abcdefghijklmnop12345678ABCDEFGH", "CBC", "DEFAULT",
"This is an AAD mixed into the input",)],
["input", "key", "mode", "padding", "aad"]
)
df.select(sf.try_aes_decrypt(
sf.unbase64(df.input), df.key, "mode", df.padding, df.aad
).cast("STRING")).show(truncate=False)
+-------------------------------------------------------------------------+
|CAST(try_aes_decrypt(unbase64(input), key, mode, padding, aad) AS STRING)|
+-------------------------------------------------------------------------+
|NULL |
+-------------------------------------------------------------------------+
예제 3: 키, 모드 및 패딩을 사용하여 데이터 암호 해독
from pyspark.sql import functions as sf
df = spark.createDataFrame([(
"AAAAAAAAAAAAAAAAAAAAAPSd4mWyMZ5mhvjiAPQJnfg=",
"abcdefghijklmnop12345678ABCDEFGH", "CBC", "DEFAULT",)],
["input", "key", "mode", "padding"]
)
df.select(sf.try_aes_decrypt(
sf.unbase64(df.input), df.key, "mode", df.padding
).cast("STRING")).show(truncate=False)
+----------------------------------------------------------------------+
|CAST(try_aes_decrypt(unbase64(input), key, mode, padding, ) AS STRING)|
+----------------------------------------------------------------------+
|Spark |
+----------------------------------------------------------------------+
예제 4: 키 및 모드로 데이터 암호 해독
from pyspark.sql import functions as sf
df = spark.createDataFrame([(
"AAAAAAAAAAAAAAAAAAAAAPSd4mWyMZ5mhvjiAPQJnfg=",
"abcdefghijklmnop12345678ABCDEFGH", "CBC", "DEFAULT",)],
["input", "key", "mode", "padding"]
)
df.select(sf.try_aes_decrypt(
sf.unbase64(df.input), df.key, "mode"
).cast("STRING")).show(truncate=False)
+----------------------------------------------------------------------+
|CAST(try_aes_decrypt(unbase64(input), key, mode, DEFAULT, ) AS STRING)|
+----------------------------------------------------------------------+
|Spark |
+----------------------------------------------------------------------+
예제 5: 키를 사용하여 데이터 암호 해독
from pyspark.sql import functions as sf
df = spark.createDataFrame([(
"83F16B2AA704794132802D248E6BFD4E380078182D1544813898AC97E709B28A94",
"0000111122223333",)],
["input", "key"]
)
df.select(sf.try_aes_decrypt(
sf.unhex(df.input), df.key
).cast("STRING")).show(truncate=False)
+------------------------------------------------------------------+
|CAST(try_aes_decrypt(unhex(input), key, GCM, DEFAULT, ) AS STRING)|
+------------------------------------------------------------------+
|Spark |
+------------------------------------------------------------------+