pgsql에서 암호화 / 복호화 사용법.
[암호화방식]
blowfish = bf
rijndael = aes
des = des
cast5 = cast5
3des = 3des
// 일반적 방법
SELECT encode(encrypt('암호화할 문자열', '암호키1', '암호화방식'), 'hex');
SELECT decrypt(decode('복호화할 문자열', 'hex'), '암호키1', '암호화방식');
// 예제 : 3des 방식으로 암호화 / 복호화
SELECT encode(encrypt('foo', '0123456789', '3des'), 'hex');
-- 암호화 결과값 : d2fb8baa1717cb02
SELECT decrypt(decode('d2fb8baa1717cb02', 'hex'), '0123456789', '3des');
// iv(Initialization Vector) 사용
SELECT encode(encrypt_iv('암호화할 문자열', '암호키1', 'IV', '암호화방식'), 'hex');
SELECT decrypt_iv(decode('복호화할 문자열', 'hex'), '암호키1', 'IV', '암호화방식');
// 예제 : blowfish 방식으로 암호화 / 복호화
SELECT encode(encrypt_iv('foo', '0123456789', 'abcd', 'bf'), 'hex');
-- result : ab751ca4c1bc250e
SELECT decrypt_iv(decode('ab751ca4c1bc250e', 'hex'), '0123456789', 'abcd', 'bf');
blowfish = bf
rijndael = aes
des = des
cast5 = cast5
3des = 3des
// 일반적 방법
SELECT encode(encrypt('암호화할 문자열', '암호키1', '암호화방식'), 'hex');
SELECT decrypt(decode('복호화할 문자열', 'hex'), '암호키1', '암호화방식');
// 예제 : 3des 방식으로 암호화 / 복호화
SELECT encode(encrypt('foo', '0123456789', '3des'), 'hex');
-- 암호화 결과값 : d2fb8baa1717cb02
SELECT decrypt(decode('d2fb8baa1717cb02', 'hex'), '0123456789', '3des');
// iv(Initialization Vector) 사용
SELECT encode(encrypt_iv('암호화할 문자열', '암호키1', 'IV', '암호화방식'), 'hex');
SELECT decrypt_iv(decode('복호화할 문자열', 'hex'), '암호키1', 'IV', '암호화방식');
// 예제 : blowfish 방식으로 암호화 / 복호화
SELECT encode(encrypt_iv('foo', '0123456789', 'abcd', 'bf'), 'hex');
-- result : ab751ca4c1bc250e
SELECT decrypt_iv(decode('ab751ca4c1bc250e', 'hex'), '0123456789', 'abcd', 'bf');
암호화 과정이 bytea 로의 변환과정 등이 있어 한글이 들어갈 경우 복호화 할 때 인코딩 변경이 필요함.
// 암호화
SELECT encode(encrypt('한글', '0123456789', '3des'), 'hex');
// 복호화
-- DB 인코딩이 UTF-8 일 경우
SELECT convert_from(decrypt(decode('e96924ddc50cb671', 'hex'), '0123456789', '3des'), 'utf8');
-- DB 인코딩이 SQL-ASCII 혹은 EUC-KR 일 경우
SELECT convert_from(decrypt(decode('e96924ddc50cb671', 'hex'), '0123456789', '3des'), 'euc-kr');
SELECT encode(encrypt('한글', '0123456789', '3des'), 'hex');
// 복호화
-- DB 인코딩이 UTF-8 일 경우
SELECT convert_from(decrypt(decode('e96924ddc50cb671', 'hex'), '0123456789', '3des'), 'utf8');
-- DB 인코딩이 SQL-ASCII 혹은 EUC-KR 일 경우
SELECT convert_from(decrypt(decode('e96924ddc50cb671', 'hex'), '0123456789', '3des'), 'euc-kr');
'DataBase' 카테고리의 다른 글
[PostgreSQL] 문자열 치환 업데이트 (0) | 2009.06.15 |
---|---|
[PostgreSQL] 암호화 되어 덤프된 테이블을 새로운 키에 맞게 재암호화 (3) | 2009.06.11 |
[PostgreSQL] DB, TABLE 정보를 SQL로 보기 (0) | 2009.06.11 |
[PostgreSQL] 문자열을 배열로 나눠 검색 (0) | 2009.05.27 |
[PostgreSQL] 인코딩을 UTF-8 로 할 때. (0) | 2009.05.25 |