

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Fungsi enkripsi dan dekripsi
<a name="encryption-decryption-functions"></a>

Fungsi enkripsi dan dekripsi membantu pengembang SQL melindungi data sensitif dari akses atau penyalahgunaan yang tidak sah dengan mengubahnya antara formulir teks biasa yang dapat dibaca dan formulir ciphertext yang tidak dapat dibaca.

AWS Clean Rooms Spark SQL mendukung fungsi enkripsi dan dekripsi berikut:

**Topics**
+ [Fungsi AES\$1ENCRYPT](AES_ENCRYPT.md)
+ [Fungsi AES\$1DECRYPT](AES_DECRYPT.md)

# Fungsi AES\$1ENCRYPT
<a name="AES_ENCRYPT"></a>

Fungsi AES\$1ENCRYPT digunakan untuk mengenkripsi data menggunakan algoritma Advanced Encryption Standard (AES).

## Sintaks
<a name="AES_ENCRYPT-syntax"></a>

```
aes_encrypt(expr, key[, mode[, padding[, iv[, aad]]]])
```

## Argumen
<a name="AES_ENCRYPT-arguments"></a>

 *expr*   
Nilai biner untuk mengenkripsi.

 *kunci*   
Passphrase yang digunakan untuk mengenkripsi data.  
Panjang kunci 16, 24 dan 32 bit didukung.

 *modus*   
Menentukan modus blok cipher yang harus digunakan untuk mengenkripsi pesan.   
Mode yang valid: ECB (Elektronik CodeBook), GCM (Mode Galois/Penghitung), CBC (Rantai Blok Sandi).

 *bantalan*   
Menentukan cara pad pesan yang panjangnya bukan kelipatan dari ukuran blok.   
Nilai yang valid: PKCS, NONE, DEFAULT.   
Padding DEFAULT berarti PKCS (Standar Kriptografi Kunci Publik) untuk ECB, NONE untuk GCM dan PKCS untuk CBC.  
Kombinasi yang didukung dari (*mode*, *padding*) adalah ('ECB', 'PKCS'), ('GCM', 'NONE') dan ('CBC', 'PKCS').

 *iv*   
Vektor inisialisasi opsional (IV). Hanya didukung untuk mode CBC dan GCM.   
Nilai yang valid: panjang 12-byte untuk GCM dan 16 byte untuk CBC.

 *aad*   
Data otentikasi tambahan opsional (AAD). Hanya didukung untuk mode GCM. Ini dapat berupa input bentuk bebas dan harus disediakan untuk enkripsi dan dekripsi.

## Jenis pengembalian
<a name="AES_ENCRYPT-returm-type"></a>

Fungsi AES\$1ENCRYPT mengembalikan nilai *expr* terenkripsi menggunakan AES dalam mode yang diberikan dengan padding yang ditentukan.

## Contoh
<a name="AES_ENCRYPT-example"></a>

Contoh berikut menunjukkan cara menggunakan fungsi Spark SQL AES\$1ENCRYPT untuk mengenkripsi string data dengan aman (dalam hal ini, kata “Spark”) menggunakan kunci enkripsi tertentu. Ciphertext yang dihasilkan kemudian dikodekan Base64 untuk membuatnya lebih mudah untuk menyimpan atau mengirimkan.

```
SELECT base64(aes_encrypt('Spark', 'abcdefghijklmnop'));
  4A5jOAh9FNGwoMeuJukfllrLdHEZxA2DyuSQAWz77dfn
```

Contoh berikut menunjukkan cara menggunakan fungsi Spark SQL AES\$1ENCRYPT untuk mengenkripsi string data dengan aman (dalam hal ini, kata “Spark”) menggunakan kunci enkripsi tertentu. Ciphertext yang dihasilkan kemudian direpresentasikan dalam format heksadesimal, yang dapat berguna untuk tugas-tugas seperti penyimpanan data, transmisi, atau debugging.

```
SELECT hex(aes_encrypt('Spark', '0000111122223333'));
 83F16B2AA704794132802D248E6BFD4E380078182D1544813898AC97E709B28A94
```

Contoh berikut menunjukkan cara menggunakan fungsi Spark SQL AES\$1ENCRYPT untuk mengenkripsi string data dengan aman (dalam hal ini, “Spark SQL”) menggunakan kunci enkripsi tertentu, mode enkripsi, dan mode padding. Ciphertext yang dihasilkan kemudian dikodekan Base64 untuk membuatnya lebih mudah untuk menyimpan atau mengirimkan.

```
SELECT base64(aes_encrypt('Spark SQL', '1234567890abcdef', 'ECB', 'PKCS'));
 3lmwu+Mw0H3fi5NDvcu9lg==
```

# Fungsi AES\$1DECRYPT
<a name="AES_DECRYPT"></a>

Fungsi AES\$1DECRYPT digunakan untuk mendekripsi data menggunakan algoritma Advanced Encryption Standard (AES).

## Sintaks
<a name="AES_DECRYPT-syntax"></a>

```
aes_decrypt(expr, key[, mode[, padding[, aad]]])
```

## Argumen
<a name="AES_DECRYPT-arguments"></a>

 *expr*   
Nilai biner untuk mendekripsi.

 *kunci*   
Passphrase yang digunakan untuk mendekripsi data.  
Frasa sandi harus sesuai dengan kunci yang awalnya digunakan untuk menghasilkan nilai terenkripsi dan panjangnya 16, 24, atau 32 byte.

 *modus*   
Menentukan modus blok cipher yang harus digunakan untuk mendekripsi pesan.   
Mode yang valid: ECB, GCM, CBC.

 *bantalan*   
Menentukan cara pad pesan yang panjangnya bukan kelipatan dari ukuran blok.   
Nilai yang valid: PKCS, NONE, DEFAULT.   
Padding DEFAULT berarti PKCS untuk ECB, NONE untuk GCM dan PKCS untuk CBC.

 *aad*   
Data otentikasi tambahan opsional (AAD). Hanya didukung untuk mode GCM. Ini dapat berupa input bentuk bebas dan harus disediakan untuk enkripsi dan dekripsi.

## Jenis pengembalian
<a name="AES_DECRYPT-return-type"></a>

Mengembalikan nilai didekripsi *expr* menggunakan AES dalam mode dengan padding.

## Contoh
<a name="AES_DECRYPT-examples"></a>

Contoh berikut menunjukkan cara menggunakan fungsi Spark SQL AES\$1ENCRYPT untuk mengenkripsi string data dengan aman (dalam hal ini, kata “Spark”) menggunakan kunci enkripsi tertentu. Ciphertext yang dihasilkan kemudian dikodekan Base64 untuk membuatnya lebih mudah untuk menyimpan atau mengirimkan. 

```
SELECT base64(aes_encrypt('Spark', 'abcdefghijklmnop'));
  4A5jOAh9FNGwoMeuJukfllrLdHEZxA2DyuSQAWz77dfn
```

Contoh berikut menunjukkan bagaimana menggunakan fungsi Spark SQL AES\$1DECRYPT untuk mendekripsi data yang sebelumnya telah dienkripsi dan Base64-dikodekan. Proses dekripsi memerlukan kunci enkripsi dan parameter yang benar (mode enkripsi dan mode padding) untuk berhasil memulihkan data plaintext asli.

```
SELECT aes_decrypt(unbase64('3lmwu+Mw0H3fi5NDvcu9lg=='), '1234567890abcdef', 'ECB', 'PKCS');
 Spark SQL
```