오라클에서는 직접적으로 데이터 암호화와 관련된 툴킷을 제공하며, 다음과 같은 방식으로 사용할 수 있습니다.
오라클 DB에 DBMS_OBFUSCATION_TOOLKIT을 설치합니다.
1) SYS 권한으로 아래의 스크립트를 실행합니다.
@$ORACLE_HOME/RDBMS/ADMIN/DBMSOBTK.SQL
@$ORACLE_HOME/RDBMS/ADMIN/PRVTOBTK.PLB
2) 툴킷에 접근할 수 있는 권한을 설정합니다.
SQL> GRANT EXECUTE ON DBMS_OBFUSCATION_TOOLKIT TO PUBLIC;
툴킷에서 제공되는 함수들은 모두 프로시져(Procedure) 형태로 제공되므로 사용자 정의 저장 프로시져 또는 함수를 만들어서 암호화를 하면 사용하기에 좋습니다.
* 암호화 종류
1. DES (Data Encrypt Standard)
DBMS_OBFUSCATION_TOOLKIT.DESEncrypt('암호화할 값', '공개키값') -- 데이터 암호화하기
DBMS_OBFUSCATION_TOOLKIT.DESDecrypt('암호화된 값', '공개키값') -- 암호화된 데이터 복호화하기
2. DES3
DBMS_OBFUSCATION_TOOLKIT.DES3Encrypt('암호화할 값', '공개키값') -- 데이터 암호화하기
DBMS_OBFUSCATION_TOOLKIT.DES3Decrypt('암호화된 값', '공개키값') -- 암호화된 데이터 복호화하기
3. MD5 (Message Digest Algorithm 5)
DBMS_OBFUSCATION_TOOLKIT.MD5('암호화할 값') -- MD5 암호화는 단방향 암호화 방식으로 복호화가 불가능합니다. 그러므로 다시 복원될 필요가 없는 데이터를 관리할 때 사용합니다. (로그인 비밀번호 등)
MD5 암호화를 사용할 수 있는 함수 만들기 예제
FUNCTION FUNC_MD5_ENCRYPTION(V_INPUT_STRING IN VARCHAR2) RETURN VARCHAR2
IS
ENCRYPTED_STRING VARCHAR2(128);
BEGIN
IF V_INPUT_STRING IS NOT NULL THEN
ENCRYPTED_STRING := LOWER(RAWTOHEX(UTL_RAW.CAST_TO_RAW(DBMS_OBFUSCATION_TOOLKIT.MD5(input_string=>V_INPUT_STRING))));
END IF;
RETURN ENCRYPTED_STRING;
END FUNC_MD5_ENCRYPTION;
위의 함수를 생성하여 사용하면 다음과 같이 호출하여 데이터를 암호화 할 수 있습니다.
VARDATA123 := FUNC_MD5_ENCRYPTION('abc123') -- VARDATA123 이란 변수에 abc123 값을 MD5암호화 적용하여 나온 결과값을 저장.
오라클 10G부터는 제공되는 툴킷이 변경되어 DBMS_CRYPTO 툴킷을 사용하여야 하며, 더 다양한 암호화 기능을 제공합니다.
'개발&컴퓨터 > DB' 카테고리의 다른 글
MSSQL 예상 실행 계획으로 프로시져(또는 쿼리) 개선하기. (1) | 2014.09.19 |
---|---|
[오라클] 문자열 자르기. (0) | 2014.09.03 |
MS-SQL 기본 포트(1433포트) 변경하기 - 무차별 대입 공격 막기 (2) | 2014.08.16 |
MS-SQL 트리거 사용하기 (간략 공략!?!?) (1) | 2014.08.15 |
오라클(ORACLE) 패키지 만들기 (0) | 2014.07.12 |