최종 수정: 에
AES_ENCRYPT
설명
AES 암호화 함수입니다. 이 함수는 MySQL의 AES_ENCRYPT 함수와 동일하게 동작합니다. 기본 알고리즘은 AES_128_ECB이며, 패딩 모드는 PKCS7입니다.
AES_ENCRYPT 함수는 전달된 키를 바로 사용하지 않고 추가로 가공합니다. 구체적인 단계는 다음과 같습니다:
- 사용하는 암호화 알고리즘에 따라 키의 바이트 수를 결정합니다. 예를 들어 AES_128_ECB 알고리즘을 사용하면 키의 바이트 수는
128 / 8 = 16입니다(AES_256_ECB 알고리즘을 사용하면 키의 바이트 수는256 / 8 = 32입니다). - 그런 다음 사용자가 입력한 키의
i번째 바이트와16*k+i번째 바이트를 XOR 연산합니다. 사용자가 입력한 키가 16바이트보다 짧으면 끝에 0을 추가합니다. - 마지막으로 새로 생성된 키를 사용하여 암호화합니다.
구문
AES_ENCRYPT( <str>, <key_str>[, <init_vector>][, <encryption_mode>])
매개변수
| 매개변수 | 설명 |
|---|---|
<str> | 암호화할 텍스트 |
<key_str> | 키입니다. 이 키는 십육진수 인코딩이 아니라 인코딩된 문자열 표현이라는 점에 유의하세요. 예를 들어 128비트 키 암호화의 경우 key_str의 길이는 16이어야 합니다. 키 길이가 부족하면 제로 패딩을 사용하여 필요한 길이를 채웁니다. 길이를 초과하면 순환 XOR 연산으로 최종 키를 구합니다. 예를 들어 알고리즘에서 사용하는 128비트 키가 key이면 key[i] = key_str[i] ^ key_str[i+128] ^ key_str[i+256] ^ ...입니다. |
<init_vector> | 알고리즘에서 사용하는 초기화 벡터입니다. 특정 알고리즘에서만 유효합니다. 지정하지 않으면 Doris는 내장 벡터를 사용합니다. |
<encryption_mode> | 암호화 알고리즘을 지정하며, 사용 가능한 값은 변수에 제시되어 있습니다. |
반환 값
암호화된 바이너리 데이터를 반환합니다.
예제
AES_128_ECB 알고리즘 사용
set block_encryption_mode='';
select to_base64(aes_encrypt('text','F3229A0B371ED2D9441B830D21A390C3'));
+----------------------------------------------------------+
| to_base64(aes_encrypt('text', '***', '', 'AES_128_ECB')) |
+----------------------------------------------------------+
| wr2JEDVXzL9+2XtRhgIloA== |
+----------------------------------------------------------+
AES_256_CBC 알고리즘 사용
set block_encryption_mode="AES_256_CBC";
select to_base64(aes_encrypt('text','F3229A0B371ED2D9441B830D21A390C3'));
+----------------------------------------------------------+
| to_base64(aes_encrypt('text', '***', '', 'AES_256_CBC')) |
+----------------------------------------------------------+
| 3dym0E7/+1zbrLIaBVNHSw== |
+----------------------------------------------------------+
AES_256_CBC 알고리즘 사용 및 초기화 벡터 설정
select to_base64(aes_encrypt('text','F3229A0B371ED2D9441B830D21A390C3', '0123456789'));
+--------------------------------------------------------------------+
| to_base64(aes_encrypt('text', '***', '0123456789', 'AES_256_CBC')) |
+--------------------------------------------------------------------+
| tsmK1HzbpnEdR2//WhO+MA== |
+--------------------------------------------------------------------+