최종 수정: 에
AES_DECRYPT
설명
AES 복호화 함수입니다. 이 함수는 MySQL의 AES_DECRYPT 함수와 동일하게 동작합니다. 기본 알고리즘은 AES_128_ECB이며, 패딩 모드는 PKCS7입니다.
구문
AES_DECRYPT( <str>, <key_str>[, <init_vector>][, <encryption_mode>])
매개변수
| 매개변수 | 설명 |
|---|---|
<str> | 복호화할 텍스트입니다. |
<key_str> | 키입니다. 이 키는 십육진수 인코딩이 아니라 인코딩된 문자열 표현입니다. 예를 들어 128비트 키 암호화의 경우 key_str의 길이는 16이어야 합니다. 키 길이가 부족하면 zero padding을 적용하여 길이를 맞춥니다. 길이가 초과하면 순환 XOR 연산으로 최종 키를 구합니다. 예를 들어 알고리즘에서 사용하는 128비트 키가 key라면 key[i] = key_str[i] ^ key_str[i+128] ^ key_str[i+256] ^ ...입니다. |
<init_vector> | 알고리즘에서 사용하는 초기화 벡터입니다. 특정 알고리즘에서만 유효합니다. 지정하지 않으면 Doris는 내장 벡터를 사용합니다. |
<encryption_mode> | 암호화 알고리즘을 지정합니다. 선택 가능한 값은 변수에 명시되어 있습니다. |
반환 값
복호화에 성공하면 복호화된 데이터를 반환합니다. 일반적으로 평문의 바이너리 표현입니다.
복호화에 실패하면 NULL을 반환합니다.
예제
복호화 성공
기본 알고리즘 사용
set block_encryption_mode='';
select aes_decrypt(from_base64('wr2JEDVXzL9+2XtRhgIloA=='),'F3229A0B371ED2D9441B830D21A390C3');
+--------------------------------------------------------------------------------+
| aes_decrypt(from_base64('wr2JEDVXzL9+2XtRhgIloA=='), '***', '', 'AES_128_ECB') |
+--------------------------------------------------------------------------------+
| text |
+--------------------------------------------------------------------------------+
AES_256_CBC 알고리즘 사용
set block_encryption_mode="AES_256_CBC";
select aes_decrypt(from_base64('3dym0E7/+1zbrLIaBVNHSw=='),'F3229A0B371ED2D9441B830D21A390C3');
+--------------------------------------------------------------------------------+
| aes_decrypt(from_base64('3dym0E7/+1zbrLIaBVNHSw=='), '***', '', 'AES_256_CBC') |
+--------------------------------------------------------------------------------+
| text |
+--------------------------------------------------------------------------------+
AES_256_CBC 알고리즘 사용 및 초기화 벡터 설정
select AES_DECRYPT(FROM_BASE64('tsmK1HzbpnEdR2//WhO+MA=='),'F3229A0B371ED2D9441B830D21A390C3', '0123456789');
+------------------------------------------------------------------------------------------+
| aes_decrypt(from_base64('tsmK1HzbpnEdR2//WhO+MA=='), '***', '0123456789', 'AES_256_CBC') |
+------------------------------------------------------------------------------------------+
| text |
+------------------------------------------------------------------------------------------+
복호화 실패
select AES_DECRYPT(FROM_BASE64('tsmK1H3zbpnEdR2//WhO+MA=='),'F3229A0B371ED2D9441B830D21A390C3', '0123456789');
+-------------------------------------------------------------------------------------------+
| aes_decrypt(from_base64('tsmK1H3zbpnEdR2//WhO+MA=='), '***', '0123456789', 'AES_256_CBC') |
+-------------------------------------------------------------------------------------------+
| NULL |
+-------------------------------------------------------------------------------------------+