암호화 함수
암호화 함수#
알티베이스는 문자열을 암호화하고 암호화된 문자열을 복호화하는 함수를 제공한다. 알티베이스에 사용된 암복호화 알고리즘은 DES(Data Encryption Standard)와 AES(Advanced Encryption Standard)이다.
알티베이스의 암호화 함수는 CBC(Cipher Block Chaining) 모드를 사용한 블록 암호화를 수행한다. 8바이트 블록 암호화를 위해서 DES 알고리즘을 사용하고 있으며, 16바이트 블록 암호화를 위해서는 이보다 향상된 AES 알고리즘을 사용한다. 만약 암호화하려는 문자열의 길이가 8바이트 또는 16바이트의 배수가 아닌 경우 PKCS7PAD16 함수를 사용하여 부족한 길이만큼 문자를 채울 수 있다.
각 알고리즘을 사용하는 암호화 함수는 아래와 같다.
AES 알고리즘#
AESDECRYPT, AESENCRYPT
DES 알고리즘#
DESDECRYPT, DESENCRYPT, TDESDECRYPT, TDESENCRYPT
AESDECRYPT#
구문#
AESDECRYPT (VARCHAR encrypted_string,
VARCHAR key_string)
설명#
-
encrypted_string
복호화할 문자열이다. 이 문자열의 길이는 16의 배수이어야 한다.
-
key_string
암호화 키로 사용되었던 문자열이다.
주의
암호화된 문자열을 화면에 출력하면 터미널 에뮬레이터 오류가 발생할 수 있다.
예제#
암호화한 텍스트를 테이블에 저장 및 복호화하여 출력하라.
1) 암호화한 텍스트를 테이블에 삽입하기
CREATE TABLE t1( encrypted_string VARCHAR(40) );
INSERT INTO t1
VALUES(AESENCRYPT(PKCS7PAD16('ABC AES TEST'), 'WORRAPS1WORRAPS2'));
2) 암호화할 때 사용한 것과 동일한 키를 이용하여 암호화된 텍스트를 복호화해서 출력하라.
SELECT PKCS7UNPAD16(AESDECRYPT(encrypted_string, 'WORRAPS1WORRAPS2'))
FROM t1;
PKCS7UNPAD16(AESDECRYPT(encrypted_string, 'WORRAPS1WORRA
-----------------------------------------------------
ABC AES TEST
1 row selected.
AESENCRYPT#
구문#
AESENCRYPT (VARCHAR expr,
VARCHAR key_string)
설명#
-
expr
암호화할 문자열이다. 이 문자열의 길이는 16의 배수이어야 한다.
-
key_string
암호화 키로 사용할 문자열이다. 이 문자열의 최소 길이는 16이다. 입력된 key_string의 길이에 따라 아래의 길이만큼의 문자열만 암호화 키로 사용되고 나머지 문자들은 무시된다. - 16 <= key_string의 길이 < 24: 16 - 24 <= key_string의 길이 < 32: 24 - key_string의 길이 >= 32: 32
예제#
AESDECRYPT 예제를 참조하라.
DESDECRYPT#
구문#
DESDECRYPT (VARCHAR encrypted_string,
VARCHAR key_string)
설명#
-
encrypted_string
복호화할 문자열이다. 이 문자열의 길이는 8의 배수이어야 한다.
-
key_string
암호화 키로 사용되었던 문자열이다. 이 문자열의 최소 길이는 8이다. 9번째와 이후의 문자는 무시된다.
주의
암호화된 문자열을 화면에 출력하면 터미널 에뮬레이터 오류가 발생할 수 있다.
예제1#
암호화한 텍스트를 테이블에 저장 및 복호화하여 출력하라.
1) 암호화한 텍스트를 테이블에 삽입하기
CREATE TABLE t1( encrypted_string VARCHAR(40) );
INSERT INTO t1
VALUES( DESENCRYPT( 'A4 ALTIBASE Corporation.', 'altibase') );
2) 암호화된 텍스트를 조회하면 알아볼 수 없을 것이다.
SELECT * FROM t1;
ENCRYPTED_STRING
--------------------------------------------
Z\uf900\u5b87\ub94c]\uffff\uffffu\uffffxE\uffffIXek
\uffff
1 row selected.
3) 암호화 할 때 사용한 것과 동일한 키를 이용하여 암호화된 텍스트를 복호화해서 출력하라.
SELECT DESDECRYPT(encrypted_string, 'altibase') FROM t1;
DESDECRYPT(ENCRYPTED_STRING, 'altibase')
--------------------------------------------
A4 ALTIBASE Corporation.
1 row selected.
예제 2#
PKCS7PAD16와 PKCS7UNPAD16 함수를 사용해서 길이가 8의 배수가 아닌 문자열을 암복호화하라.
1) PKCS7PAD16 함수를 사용해서 길이가 8의 배수가 아닌 문자열을 암호화하여 저장하라.
CREATE TABLE t1( encrypted_string VARCHAR(40) );
INSERT INTO t1
VALUES( DESENCRYPT( PKCS7PAD16( 'Altibase Client Query utility.'), 'altibase' ) );
2) PKCS7UNPAD16 함수를 사용해서 1번에서 암호화한 텍스트를 복호화하라.
SELECT PKCS7PAD16( DESDECRYPT( encrypted_string, 'altibase' ) ) desdecrypt_str
FROM t1;
DESDECRYPT_STR
----------------------------------------------------
Altibase Client Query utility.
1 row selected.
DESENCRYPT#
구문#
DESENCRYPT (VARCHAR expr,
VARCHAR key_string)
설명#
-
expr
암호화할 문자열이다. 이 문자열의 길이는 8의 배수이어야 한다.
-
key_string
암호화 키로 사용할 문자열이다. 이 문자열의 최소 길이는 8이다. 9번째와 이후의 문자는 무시된다.
예제#
DESDECRYPT 예제를 참조한다.
TDESDECRYPT, TRIPLE_DESDECRYPT#
구문#
TRIPLE_DESDECRYPT (VARCHAR input_string,
VARCHAR key_string,
[, SMALLINT keying_option
[, VARCHAR initial_vector]])
설명#
이전에 TDESENCRYPT 또는 TRIPLE_DESENCRYPT 함수를 사용해서 암호화된 문자열을 입력받아 복호화한 후 그 문자열을 반환하는 함수이다.
-
input_string
복호화할 문자열이다. 이 문자열의 길이는 8바이트의 배수이어야 한다.
-
key_string
암호화 키로 사용되었던 문자열이다.
-
keying_option
암호화할 때 사용했던 키 모드를 지정한다.
-
initial_vector
암호화할 때 사용했던 초기화 벡터이다.
주의
암호화된 문자열을 화면에 출력하면 터미널 에뮬레이터 오류가 발생할 수 있다.
예제#
암호화한 텍스트를 테이블에 저장 및 복호화하여 출력하라.
1) 암호화한 텍스트를 테이블에 삽입하기
CREATE TABLE t1( encrypted_string VARCHAR(40) );
INSERT INTO t1
VALUES( TDESENCRYPT( 'A4 ALTIBASE Corporation.', 'altibaselocation'));
2) 암호화된 텍스트를 조회하면 알아볼 수 없을 것이다.
SELECT * FROM t1;
ENCRYPTED_STRING
--------------------------------------------
-m
y???????/o??
1 row selected.
3) 암호화 할 때 사용한 것과 동일한 키를 이용하여 암호화된 텍스트를 복호화해서 출력하라.
SELECT TDESDECRYPT(encrypted_string, 'altibaselocation') FROM t1;
TDESDECRYPT(ENCRYPTED_STRING, 'altibaseloc
----------------------------------------------
A4 ALTIBASE Corporation.
1 row selected.
TDESENCRYPT, TRIPLE_DESENCRYPT#
구문#
TRIPLE_DESENCRYPT (VARCHAR input_string,
VARCHAR key_string,
[, SMALLINT keying_option
[, VARCHAR initial_vector]]))
설명#
TDESENCRYPT와 TRIPLE_DESENCRYPT 함수는 입력 문자열을 3DES로 암호화하여, 암호화된 문자열을 반환하는 함수이다. Triple-DES encryption(3DES)는 문자열을 DES 알고리즘에 3번 통과시켜 암호화하는 것을 말한다.
-
input_string
암호화할 문자열이다. 이 문자열의 길이는 8바이트의 배수이어야 한다.
-
key_string
암호화 키로 사용할 문자열이다.
-
keying_option
키 모드를 지정한다. 키 모드는 0 또는 1이고, 지정하지 않으면, 기본값은 0이다. 0이면 2개의 키 모드(two-key mode)이고, 이 때 key_string의 길이는 16바이트 이상이어야 한다. 1이면 3개의 키 모드(three-key mode)이고, key_string의 길이는 24바이트 이상이어야 한다.
-
initial_vector
초기화 벡터로 암호화 과정에서 사용되는 난수이다. 8바이트 이상 길이의 문자열이다. 지정하지 않으면, 기본값은 '00000000'이다.
예제#
TDESDECRYPT 예제를 참조하라.