

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 암호화 및 복호화 함수
<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 함수는 고급 암호화 표준(AES) 알고리즘을 사용하여 데이터를 암호화하는 데 사용됩니다.

## 구문
<a name="AES_ENCRYPT-syntax"></a>

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

## 인수
<a name="AES_ENCRYPT-arguments"></a>

 expr**   
암호화할 이진 값입니다.

 *키*   
데이터를 암호화하는 데 사용할 암호입니다.  
16, 24 및 32비트의 키 길이가 지원됩니다.

 *mode*   
메시지를 암호화하는 데 사용할 블록 암호 모드를 지정합니다.  
유효한 모드: ECB(Electronic 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 함수는 고급 암호화 표준(AES) 알고리즘을 사용하여 데이터를 복호화하는 데 사용됩니다.

## 구문
<a name="AES_DECRYPT-syntax"></a>

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

## 인수
<a name="AES_DECRYPT-arguments"></a>

 expr**   
복호화할 이진 값입니다.

 *키*   
데이터를 복호화하는 데 사용할 암호입니다.  
암호는 원래 암호화된 값을 생성하는 데 사용된 키와 일치해야 하며 16, 24 또는 32바이트 길이여야 합니다.

 *mode*   
메시지를 복호화하는 데 사용할 블록 암호 모드를 지정합니다.  
유효한 모드: 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
```