Table의 패스워드 필드를 암호화 하려고 하는데요.
Encryt/Decrypt 함수를 어떻게 사용하면 되나요?
특정서버에서만 사용가능하다고 하는데.. 사용가능한지 불가한지 어떻게 알 수 있나요?
부탁드립니다.
1.DB2 UDB V7.2에서 새로 추가된 기능 중 하나로써, 특정 칼럼의 Data를 Encrypt/Decrypt 할 수 있습니다..
2.함수 설명
1. SET ENCRYPTION password : 향후 나오는 encrypt/decrypt 명령에서 사용될 password를 지정하는 명령문
2. ENCRYPT : 데이터의 encryption
3. DECRYPT_CHAR : encryption된 data를 VARCHAR 타입으로 decryption
4. DECRYPT_BIN : encryption된 data를 VARCHAR FOR BIT DATA타입으로 decryption
5. GETHINT : encryption된 data의 password에 대한 hint를 리턴.
3.제한사항
encryption 칼럼 : CHAR FOR BIT DATA / VARCHAR FOR BIT DATA
컬럼 길이 산정은 힌트가 없는 경우에는 16byte를 추가하고 힌트가 있을 경우에는 48byte를 추가합니다..
예) 일반적으로 주민번호컬럼이 char(13)으로 잡히지만..
힌트가 없는 암호화 컬럼이라면 char(29)로 13byte에 16byte를 추가하여 타입을 정합니다..
4.기능구현
1.테이블 생성
주민번호(jumin_no)를 암호화 컬럼으로 한다면..
create table emp (
empno char(6) not null,
empname char(10) not null with default,
jumin_no char(29) for bit data not null with default);
2.데이터 삽입
insert into emp values
('000001','Nicole',encrypt('1234561234567','xxxx'));
==>위 insert문에서 xxxx는 주민번호를 암호화 할 패스워드를 의미합니다..
3.데이터 조회
DECRYPT함수 사용하지 않고 조회 할 경우 HEX코드로 표시됩니다..
select jumin_no from emp
JUMIN_NO
---------------------------------------
x'00F808FF03CAD5AD11C27469109702B3'
그러므로
조회시에는 DECRYPT()함수를 사용해야만 데이터를 확인하실수 있습니다..
select decrypt_char(JUMIN_NO,'xxxx') from emp
1234561234567
그럼 좋은 하루 되세요.. ^^