Bagikan melalui


aes_encrypt

Mengembalikan nilai terenkripsi menggunakan input AES yang diberikan mode dengan yang ditentukan padding. Panjang kunci 16, 24, dan 32 bit didukung. Kombinasi (mode, padding) yang didukung adalah (ECB, PKCS), (GCM, NONE) dan (CBC, PKCS). Vektor inisialisasi opsional (IV) hanya didukung untuk mode CBC dan GCM. Ini harus 16 byte untuk CBC dan 12 byte untuk GCM. Jika tidak disediakan, vektor acak akan dihasilkan dan didahului ke output. Data terautentikasi tambahan opsional (AAD) hanya didukung untuk GCM. Jika disediakan untuk enkripsi, nilai AAD yang identik harus disediakan untuk dekripsi. Mode defaultnya adalah GCM.

Syntax

from pyspark.sql import functions as sf

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

Parameter-parameternya

Pengaturan Tipe Description
input pyspark.sql.Column atau str Nilai biner untuk dienkripsi.
key pyspark.sql.Column atau str Frase sandi yang digunakan untuk mengenkripsi data.
mode pyspark.sql.Column atau str, opsional Menentukan mode sandi blok mana yang harus digunakan untuk mengenkripsi pesan. Mode yang valid: ECB, GCM, CBC.
padding pyspark.sql.Column atau str, opsional Menentukan cara mengalihkan pesan yang panjangnya bukan kelipatan ukuran blok. Nilai yang valid: PKCS, NONE, DEFAULT. Padding DEFAULT berarti PKCS untuk ECB, NONE untuk GCM dan PKCS untuk CBC.
iv pyspark.sql.Column atau str, opsional Vektor inisialisasi opsional. Hanya didukung untuk mode CBC dan GCM. Nilai yang valid: Tidak ada atau "". Array 16-byte untuk mode CBC. Array 12-byte untuk mode GCM.
aad pyspark.sql.Column atau str, opsional Data tambahan opsional yang diautentikasi. Hanya didukung untuk mode GCM. Ini bisa berupa input bentuk bebas dan harus disediakan untuk enkripsi dan dekripsi.

Pengembalian Barang

pyspark.sql.Column: Kolom baru yang berisi nilai terenkripsi.

Examples

Contoh 1: Mengenkripsi data dengan kunci, mode, padding, iv, dan 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                           |
+-----------------------------------------------------------------------+

Contoh 2: Mengenkripsi data dengan kunci, mode, padding, dan 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                        |
+--------------------------------------------------------------------+

Contoh 3: Mengenkripsi data dengan kunci, mode, dan padding

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                                                                                    |
+---------------------------------------------------------------------------------------------+

Contoh 4: Mengenkripsi data dengan kunci dan mode

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                                                                                    |
+---------------------------------------------------------------------------------------------+

Contoh 5: Mengenkripsi data dengan kunci

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                                                                                                    |
+-------------------------------------------------------------------------------------------------------------+