GRANT EXECUTE ON DBMS_OBFUSCATION_TOOLKIT TO [계정명]; GRANT EXECUTE ON DBMS_CRYPTO TO [계정명]; |
2. 권한을 할당한 유저로 접속하여 패키지 생성 Script를 실행합니다.
Header 생성 Script
CREATE OR REPLACE PACKAGE [계정명].ENCRYPTION_AES IS /****************************************************************************** 암호화 ******************************************************************************/ FUNCTION ENC_AES ( INPUT_STRING IN VARCHAR2 ) RETURN VARCHAR2; /****************************************************************************** 암호화 끝 ******************************************************************************/
복호화 ******************************************************************************/ FUNCTION DEC_AES ( INPUT_STRING IN VARCHAR2 ) RETURN VARCHAR2; /****************************************************************************** 복호화 끝 ******************************************************************************/
/ |
Body 생성 Script
CREATE OR REPLACE PACKAGE BODY [계정명].ENCRYPTION_AES IS /****************************************************************************** 암호화 ******************************************************************************/ FUNCTION ENC_AES ( INPUT_STRING IN VARCHAR2 ) RETURN VARCHAR2 IS
V_KEY_DATA_RAW RAW(64); -- 키값 ENCRYTED_RAW RAW(320); -- 암호화 된 데이타 CONVERTED_STRING VARCHAR2(320); -- 형 변환 데이타
V_ORIGINAL_RAW := UTL_I18N.STRING_TO_RAW(INPUT_STRING, 'AL32UTF8'); -- VARCHAR2 -> RAW 타입으로 변경 (변경 이유는 아래에..) V_KEY_DATA_RAW := UTL_I18N.STRING_TO_RAW('AKDKEKDKFKGKEKSD', '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 );
-- ORA-06502: PL/SQL: numeric or value error: hex to raw conversion error 이러한 에러를 볼 수 있을 것이다. RETURN CONVERTED_STRING; END ENC_AES; /****************************************************************************** 암호화 끝 ******************************************************************************/
복호화 ******************************************************************************/ FUNCTION DEC_AES ( INPUT_STRING IN VARCHAR2 ) RETURN VARCHAR2 IS
DECRYPTED_RAW RAW(320); -- 복호화 값 CONVERTED_STRING VARCHAR2(320); -- 형 변환 데이타
V_KEY_DATA_RAW := UTL_I18N.STRING_TO_RAW('AKDKEKDKFKGKEKSD', 'AL32UTF8'); DECRYPTED_RAW := DBMS_CRYPTO.DECRYPT( SRC => utl_encode.base64_decode(utl_raw.cast_to_raw(INPUT_STRING)),
-- ORA-06502: PL/SQL: numeric or value error: hex to raw conversion error 이러한 에러를 볼 수 있을 것이다. TYP => DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, KEY => V_KEY_DATA_RAW );
RETURN CONVERTED_STRING; END DEC_AES; /****************************************************************************** 복호화 끝 ******************************************************************************/
/ |
3. 테스트
SELECT ENCRYPTION_AES.ENC_AES('123456789012345678901234567890123456789012345678901234567890') AA FROM DUAL;
|
ORACLE 트리거 샘플 (0) | 2013.05.30 |
---|---|
DBMS_OBFUSCATION_TOOLKIT 의 암호화/복호화 (0) | 2013.05.24 |
컬럼이름으로 테이블 검색 (0) | 2013.05.23 |
SELECT 로 UPDATE 하기 (0) | 2013.05.23 |
테이블 초기 크기 계산법 (0) | 2013.05.23 |