aes_encrypt
指定されたpaddingを使用して、指定されたmodeで AES を使用して暗号化されたinputの値を返します。16、24、32 ビットのキーの長さがサポートされています。( mode 、 padding ) のサポートされている組み合わせは ( ECB 、 PKCS )、 ( GCM 、 NONE )、および ( CBC 、 PKCS ) です。オプションの初期化ベクトル (IV) は、CBC モードと GCM モードでのみサポートされます。これらは、CBC の場合は 16 バイト、GCM の場合は 12 バイトである必要があります。指定しない場合は、ランダムなベクトルが生成され、出力の先頭に追加されます。オプションの追加認証データ (AAD) は GCM でのみサポートされます。暗号化に指定されている場合、復号化にも同じ AAD 値を指定する必要があります。デフォルトモードは GCM です。
構文
from pyspark.sql import functions as sf
sf.aes_encrypt(input, key, mode=None, padding=None, iv=None, aad=None)
パラメーター
パラメーター | Type | 説明 |
|---|---|---|
|
| 暗号化するバイナリ値。 |
|
| データを暗号化するために使用するパスフレーズ。 |
|
| メッセージを暗号化するために使用するブロック暗号モードを指定します。有効なモード: ECB、GCM、CBC。 |
|
| 長さがブロック サイズの倍数ではないメッセージを埋め込む方法を指定します。有効な値: PKCS、NONE、安全。 当然のパディングとは、ECB の場合は PKCS、GCM の場合は NONE、CBC の場合は PKCS を意味します。 |
|
| オプションの初期化ベクトル。CBC および GCM モードのみサポートされます。有効な値: なしまたは ""。CBC モードの場合は 16 バイト配列。GCM モードの 12 バイト配列。 |
|
| オプションの追加認証データ。GCM モードのみサポートされます。これは任意の自由形式の入力にすることができ、暗号化と復号化の両方に提供する必要があります。 |
戻り値
pyspark.sql.Column: 暗号化された値を含む新しい列。
例
例1 : キー、モード、パディング、iv、aadを使用してデータを暗号化する
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)
+-----------------------------------------------------------------------+
|base64(aes_encrypt(input, key, mode, padding, to_binary(iv, hex), aad))|
+-----------------------------------------------------------------------+
|AAAAAAAAAAAAAAAAQiYi+sTLm7KD9UcZ2nlRdYDe/PX4 |
+-----------------------------------------------------------------------+
例2 : キー、モード、パディング、ivでデータを暗号化する
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)
+--------------------------------------------------------------------+
|base64(aes_encrypt(input, key, mode, padding, to_binary(iv, hex), ))|
+--------------------------------------------------------------------+
|AAAAAAAAAAAAAAAAQiYi+sRNYDAOTjdSEcYBFsAWPL1f |
+--------------------------------------------------------------------+
例3 : キー、モード、パディングを使用してデータを暗号化する
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)
+---------------------------------------------------------------------------------------------+
|CAST(aes_decrypt(aes_encrypt(input, key, mode, padding, , ), key, mode, padding, ) AS STRING)|
+---------------------------------------------------------------------------------------------+
|Spark SQL |
+---------------------------------------------------------------------------------------------+
例4 : キーとモードでデータを暗号化する
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)
+---------------------------------------------------------------------------------------------+
|CAST(aes_decrypt(aes_encrypt(input, key, mode, DEFAULT, , ), key, mode, DEFAULT, ) AS STRING)|
+---------------------------------------------------------------------------------------------+
|Spark SQL |
+---------------------------------------------------------------------------------------------+
例5 : キーでデータを暗号化する
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)
+-------------------------------------------------------------------------------------------------------------+
|CAST(aes_decrypt(unbase64(base64(aes_encrypt(input, key, GCM, DEFAULT, , ))), key, GCM, DEFAULT, ) AS STRING)|
+-------------------------------------------------------------------------------------------------------------+
|Spark SQL |
+-------------------------------------------------------------------------------------------------------------+