(주)누리웨어

화상연동/Web,APP 구축및서비스/LMS/평생교육/학점은행/기업교육/연수관리/설문구축/

DBMS_CRYPTO릉 이용한 AES256 알고리즘 암호화/복호화

1.sys 계정으로 암호화 패키지를 생성할 유저에게 권한을 할당

GRANT EXECUTE ON DBMS_OBFUSCATION_TOOLKIT TO [유저명];

GRANT EXECUTE ON DBMS_CRYPTO TO [유저명];

2.패키지 생성
1. 본문 실행
create or replace
PACKAGE ENCRYPT_AES
IS

FUNCTION ENC_AES ( INPUT_STRING IN VARCHAR2

) RETURN VARCHAR2;

FUNCTION DEC_AES ( INPUT_STRING IN VARCHAR2

) RETURN VARCHAR2;

END ENCRYPT_AES;

2.Body 실행
create or replace
PACKAGE BODY ENCRYPT_AES

IS

FUNCTION ENC_AES ( INPUT_STRING IN VARCHAR2

) RETURN VARCHAR2

IS

V_ORIGINAL_RAW RAW(130); — 암호화 전 데이타

V_KEY_DATA_RAW RAW(64); — 키값

ENCRYTED_RAW RAW(320); — 암호화 된 데이타

CONVERTED_STRING VARCHAR2(320); — 형 변환 데이타

BEGIN

IF INPUT_STRING = NULL OR INPUT_STRING = ” THEN
CONVERTED_STRING := ”;
ELSE
V_ORIGINAL_RAW := UTL_I18N.STRING_TO_RAW(INPUT_STRING, ‘AL32UTF8’); — VARCHAR2 -> RAW 타입으로 변경 (변경 이유는 아래에..)

V_KEY_DATA_RAW := UTL_I18N.STRING_TO_RAW(‘AKDKEKDKNURIWARE’, ‘AL32UTF8’); — 키값 RAW 타입으로 변경.

ENCRYTED_RAW := DBMS_CRYPTO.ENCRYPT( SRC => V_ORIGINAL_RAW,

TYP => DBMS_CRYPTO.ENCRYPT_AES128 +

DBMS_CRYPTO.CHAIN_CBC +

DBMS_CRYPTO.PAD_PKCS5,

KEY => V_KEY_DATA_RAW );

CONVERTED_STRING := UTL_RAW.cast_to_varchar2( utl_encode.base64_encode(ENCRYTED_RAW) ) ;

END IF;

RETURN CONVERTED_STRING;

END ENC_AES;

FUNCTION DEC_AES ( INPUT_STRING IN VARCHAR2

) RETURN VARCHAR2

IS

V_KEY_DATA_RAW RAW(64); — 키값

DECRYPTED_RAW RAW(320); — 복호화 값

CONVERTED_STRING VARCHAR2(320); — 형 변환 데이타

BEGIN

IF INPUT_STRING is null OR INPUT_STRING = ” THEN
CONVERTED_STRING := ”;
ELSE
V_KEY_DATA_RAW := UTL_I18N.STRING_TO_RAW(‘AKDKEKDKNURIWARE’, ‘AL32UTF8’);

DECRYPTED_RAW := DBMS_CRYPTO.DECRYPT( SRC => utl_encode.base64_decode(utl_raw.cast_to_raw(INPUT_STRING)),

TYP => DBMS_CRYPTO.ENCRYPT_AES128 +

DBMS_CRYPTO.CHAIN_CBC +

DBMS_CRYPTO.PAD_PKCS5,

KEY => V_KEY_DATA_RAW );

CONVERTED_STRING := UTL_I18N.RAW_TO_CHAR(DECRYPTED_RAW, ‘AL32UTF8’); — RAW -> CHAR 타입으로 변환하여 RETURN
END IF;

RETURN CONVERTED_STRING;

END DEC_AES;

END ENCRYPT_AES;

이상입니다.

,

댓글 남기기