指定した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)
パラメーター
| パラメーター | タイプ | 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 を意味します。 |
iv |
pyspark.sql.Column または str、省略可能 |
オプションの初期化ベクトル。 CBC モードと GCM モードでのみサポートされます。 有効な値: None または "". CBC モードの場合は 16 バイト配列。 GCM モードの場合は 12 バイト配列。 |
aad |
pyspark.sql.Column または str、省略可能 |
オプションの追加の認証済みデータ。 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 |
+-------------------------------------------------------------------------------------------------------------+