メインコンテンツまでスキップ

aes_encrypt

指定されたpaddingを使用して、指定されたmodeで AES を使用して暗号化されたinputの値を返します。16、24、32 ビットのキーの長さがサポートされています。( modepadding ) のサポートされている組み合わせは ( ECBPKCS )、 ( GCMNONE )、および ( CBCPKCS ) です。オプションの初期化ベクトル (IV) は、CBC モードと GCM モードでのみサポートされます。これらは、CBC の場合は 16 バイト、GCM の場合は 12 バイトである必要があります。指定しない場合は、ランダムなベクトルが生成され、出力の先頭に追加されます。オプションの追加認証データ (AAD) は GCM でのみサポートされます。暗号化に指定されている場合、復号化にも同じ AAD 値を指定する必要があります。デフォルトモードは GCM です。

構文

Python
from pyspark.sql import functions as sf

sf.aes_encrypt(input, key, mode=None, padding=None, iv=None, aad=None)

パラメーター

パラメーター

Type

説明

input

pyspark.sql.Column または文字列

暗号化するバイナリ値。

key

pyspark.sql.Column または文字列

データを暗号化するために使用するパスフレーズ。

mode

pyspark.sql.Column または文字列(オプション)

メッセージを暗号化するために使用するブロック暗号モードを指定します。有効なモード: ECB、GCM、CBC。

padding

pyspark.sql.Column または文字列(オプション)

長さがブロック サイズの倍数ではないメッセージを埋め込む方法を指定します。有効な値: PKCS、NONE、安全。 当然のパディングとは、ECB の場合は PKCS、GCM の場合は NONE、CBC の場合は PKCS を意味します。

iv

pyspark.sql.Column または文字列(オプション)

オプションの初期化ベクトル。CBC および GCM モードのみサポートされます。有効な値: なしまたは ""。CBC モードの場合は 16 バイト配列。GCM モードの 12 バイト配列。

aad

pyspark.sql.Column または文字列(オプション)

オプションの追加認証データ。GCM モードのみサポートされます。これは任意の自由形式の入力にすることができ、暗号化と復号化の両方に提供する必要があります。

戻り値

pyspark.sql.Column: 暗号化された値を含む新しい列。

例1 : キー、モード、パディング、iv、aadを使用してデータを暗号化する

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([(
"Spark", "abcdefghijklmnop12345678ABCDEFGH", "GCM", "DEFAULT",
"000000000000000000000000", "This is an AAD mixed into the input",)],
["input", "key", "mode", "padding", "iv", "aad"]
)
df.select(sf.base64(sf.aes_encrypt(
df.input, df.key, "mode", df.padding, sf.to_binary(df.iv, sf.lit("hex")), df.aad)
)).show(truncate=False)
Output
+-----------------------------------------------------------------------+
|base64(aes_encrypt(input, key, mode, padding, to_binary(iv, hex), aad))|
+-----------------------------------------------------------------------+
|AAAAAAAAAAAAAAAAQiYi+sTLm7KD9UcZ2nlRdYDe/PX4 |
+-----------------------------------------------------------------------+

例2 : キー、モード、パディング、ivでデータを暗号化する

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([(
"Spark", "abcdefghijklmnop12345678ABCDEFGH", "GCM", "DEFAULT",
"000000000000000000000000", "This is an AAD mixed into the input",)],
["input", "key", "mode", "padding", "iv", "aad"]
)
df.select(sf.base64(sf.aes_encrypt(
df.input, df.key, "mode", df.padding, sf.to_binary(df.iv, sf.lit("hex")))
)).show(truncate=False)
Output
+--------------------------------------------------------------------+
|base64(aes_encrypt(input, key, mode, padding, to_binary(iv, hex), ))|
+--------------------------------------------------------------------+
|AAAAAAAAAAAAAAAAQiYi+sRNYDAOTjdSEcYBFsAWPL1f |
+--------------------------------------------------------------------+

例3 : キー、モード、パディングを使用してデータを暗号化する

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([(
"Spark SQL", "1234567890abcdef", "ECB", "PKCS",)],
["input", "key", "mode", "padding"]
)
df.select(sf.aes_decrypt(sf.aes_encrypt(df.input, df.key, "mode", df.padding),
df.key, df.mode, df.padding
).cast("STRING")).show(truncate=False)
Output
+---------------------------------------------------------------------------------------------+
|CAST(aes_decrypt(aes_encrypt(input, key, mode, padding, , ), key, mode, padding, ) AS STRING)|
+---------------------------------------------------------------------------------------------+
|Spark SQL |
+---------------------------------------------------------------------------------------------+

例4 : キーとモードでデータを暗号化する

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([(
"Spark SQL", "0000111122223333", "ECB",)],
["input", "key", "mode"]
)
df.select(sf.aes_decrypt(sf.aes_encrypt(df.input, df.key, "mode"),
df.key, df.mode
).cast("STRING")).show(truncate=False)
Output
+---------------------------------------------------------------------------------------------+
|CAST(aes_decrypt(aes_encrypt(input, key, mode, DEFAULT, , ), key, mode, DEFAULT, ) AS STRING)|
+---------------------------------------------------------------------------------------------+
|Spark SQL |
+---------------------------------------------------------------------------------------------+

例5 : キーでデータを暗号化する

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([(
"Spark SQL", "abcdefghijklmnop",)],
["input", "key"]
)
df.select(sf.aes_decrypt(
sf.unbase64(sf.base64(sf.aes_encrypt(df.input, df.key))), df.key
).cast("STRING")).show(truncate=False)
Output
+-------------------------------------------------------------------------------------------------------------+
|CAST(aes_decrypt(unbase64(base64(aes_encrypt(input, key, GCM, DEFAULT, , ))), key, GCM, DEFAULT, ) AS STRING)|
+-------------------------------------------------------------------------------------------------------------+
|Spark SQL |
+-------------------------------------------------------------------------------------------------------------+