3. 실행 예제
1) Encrypt하여 데이터 입력
-- 테스트 테이블을 생성 합니다.
SQL>create table encrypt_table( id number, passwd varchar(20) );
-- 테스트 데이트럴 입력 합니다.
-- CryptIT.encrypt(비밀번호, 키값)
SQL>INSERT INTO encrypt_table VALUES( 1, CryptIT.encrypt('1234', 'storm'));
1 개의 행이 만들어졌습니다.
SQL>INSERT INTO encrypt_table VALUES( 2, CryptIT.encrypt('5678', 'oramaster'));
1 개의 행이 만들어졌습니다.
2) Decrypt하여 데이터 조회
--> Decrypt하지 않으면 암호화된 데이터와 비교되서 결과값이 출력되지 않습니다.
SQL> select id, passwd from encrypt_table where passwd = '1234';
선택된 레코드가 없습니다.
--> 저장장치에 Encrypt된 값으로 저장 됩니다.
SQL> col passwd format a60
SQL> select id, dump(passwd) passwd from encrypt_table;
ID PASSWD
---------- -------------------------------------------------------------
1 Typ=1 Len=8: 246,27,80,184,227,225,245,31
2 Typ=1 Len=8: 175,231,213,125,85,223,46,133
--> Encrypt할 때 사용한 Key로만 Decrypt할 수 있습니다.
SQL>SELECT id, CryptIT.decrypt(passwd,'storm') passwd
FROM encrypt_table
WHERE CryptIT.decrypt(passwd,'storm') = '1234';
ID PASSWD
---------- -----------
1 1234
SQL>SELECT id, CryptIT.decrypt(passwd,'oramaster') passwd
FROM encrypt_table
WHERE CryptIT.decrypt(passwd,'oramaster') = '5678';
ID PASSWD
---------- -----------
2 5678
주의) Table에 접근 권한이 있는 다른 유저도 Key값을 알면 Decrypt할 수 있습니다.
4) 관련 ORA error number
ORA error 28231 "Invalid input to Obfuscation toolkit"
- input data, key값이 NULL일 경우 발생
ORA error 28232 "Invalid input size for Obfuscation toolkit"
- input data가 8 bytes 배수가 아닐 경우 발생
ORA error 28233 "Double encryption not supported by DESEncrypt in Obfuscation toolkit"
- encrypt data를 다시 encrypt경우 발생
관 련 자 료
===========
Oracle8i Supplied PL/SQL Packages Reference Release 2 (8.1.6)
|