

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 暗号化および復号関数
<a name="encryption-decryption-functions"></a>

暗号化および復号関数は、SQL デベロッパーが読み取り可能なプレーンテキスト形式と読み取り不可能な暗号化テキスト形式の間で機密データを変換することで、不正アクセスや誤用から保護するのに役立ちます。

AWS Clean Rooms Spark SQL は、次の暗号化および復号関数をサポートしています。

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

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

AES\$1ENCRYPT 関数は、Advanced Encryption Standard (AES) アルゴリズムを使用してデータを暗号化するために使用されます。

## 構文
<a name="AES_ENCRYPT-syntax"></a>

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

## 引数
<a name="AES_ENCRYPT-arguments"></a>

 expr**   
暗号化するバイナリ値。

 *key*   
データの暗号化に使用するパスフレーズ。  
16、24、32 ビットのキー長がサポートされています。

 *モード*   
メッセージの暗号化に使用するブロック暗号モードを指定します。  
有効なモード: ECB (電子 CodeBook)、GCM (Galois/Counter Mode)、CBC (Cipher-Block Chaining)。

 *パディング*   
長さがブロックサイズの倍数ではないメッセージをパディングする方法を指定します。  
有効な値: PKCS、NONE、DEFAULT。  
DEFAULT パディングは、ECB の場合は PKCS (パブリックキー暗号化標準）、GCM の場合は NONE、CBC の場合は PKCS を意味します。  
（*モード*、*パディング*) のサポートされている組み合わせは、 ('ECB'、'PKCS')、 ('GCM'、'NONE')、および ('CBC'、'PKCS') です。

 *iv*   
オプションの初期化ベクトル (IV)。CBC モードと GCM モードでのみサポートされます。  
有効な値: GCM の場合は 12 バイト、CBC の場合は 16 バイト。

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

## 戻り型
<a name="AES_ENCRYPT-returm-type"></a>

AES\$1ENCRYPT 関数は、指定されたパディングで指定されたモードで AES を使用して暗号化された *expr* の値を返します。

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

次の例は、Spark SQL AES\$1ENCRYPT 関数を使用して、指定された暗号化キーを使用してデータの文字列 (この場合は「Spark」という単語) を安全に暗号化する方法を示しています。結果として得られる暗号文は Base64-encodedされ、保存または送信が容易になります。

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

次の例は、Spark SQL AES\$1ENCRYPT 関数を使用して、指定された暗号化キーを使用してデータの文字列 (この場合は「Spark」という単語) を安全に暗号化する方法を示しています。結果として得られる暗号文は 16 進形式で表されます。これは、データストレージ、送信、デバッグなどのタスクに役立ちます。

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

次の例は、Spark SQL AES\$1ENCRYPT 関数を使用して、指定された暗号化キー、暗号化モード、パディングモードを使用して、データの文字列 (この場合は「Spark SQL」) を安全に暗号化する方法を示しています。結果として得られる暗号文は Base64-encodedされ、保存または送信が容易になります。

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

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

AES\$1DECRYPT 関数は、Advanced Encryption Standard (AES) アルゴリズムを使用してデータを復号するために使用されます。

## 構文
<a name="AES_DECRYPT-syntax"></a>

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

## 引数
<a name="AES_DECRYPT-arguments"></a>

 expr**   
復号するバイナリ値。

 *key*   
データの復号に使用するパスフレーズ。  
パスフレーズは、暗号化された値の生成に最初に使用されたキーと一致し、16、24、または 32 バイトの長さである必要があります。

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

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

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

## 戻り型
<a name="AES_DECRYPT-return-type"></a>

パディング付きのモードで AES を使用して、復号された *expr* の値を返します。

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

次の例は、Spark SQL AES\$1ENCRYPT 関数を使用して、指定された暗号化キーを使用してデータの文字列 (この場合は「Spark」という単語) を安全に暗号化する方法を示しています。結果として得られる暗号文は Base64-encodedされ、保存または送信が容易になります。

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

次の例は、Spark SQL AES\$1DECRYPT 関数を使用して、以前に暗号化され Base64-encodedされたデータを復号する方法を示しています。復号プロセスでは、元のプレーンテキストデータを正常に復元するために、正しい暗号化キーとパラメータ (暗号化モードとパディングモード) が必要です。

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