728x90
데이터베이스 파일 암호화
H2는 데이터베이스 파일을 암호화 할 수 있는 기능을 제공한다. 암호화 알고리즘은 총 3가지이다.
- AES : also known as Rijndael, only AES-128 is implemented.
- XTEA : the 32 round version.
- FOG : pseudo-encryption only useful for hiding data from a text editor.
데이터베이스 파일 암호화를 사용하기 위해서는 데이터베이스에 연결할 때, 암호화 알고리즘 설정과 파일 암호를 지정해야 한다.
암호화 된 데이터베이스 생성
URL에 지정한 데이터베이스가 없으면 기본적으로 자동으로 데이터베이스를 새로 생성한다. 암호화 된 데이터베이스를 생성하기 위해서는 이미 로컬에 존재하는 것처럼 URL에 설정하고 사용하면 된다.
암호화 된 데이터베이스 연결
데이터베이스 접속 URL에 암호화 알고리즘을 설정하고, 파일 암호는 암호 필드에 지정한다. 파일 암호는 사용자 암호 앞에 설정하는 것을 유의해야 한다. 그리고 두 암호 사이에 공백은 필수적으로 있어야 한다. 공백을 기준으로 파일 암호화 사용자 암호를 구분하기 때문이다. 그래서 파일 암호 자체에는 공백이 있으면 안된다.
String url = "jdbc:h2:~/test;CIPHER=AES";
String user = "sa";
String pwds = "filepwd userpwd";
conn = DriverManager.getConnection(url, user, pwds);
데이터베이스 암호화 or 복호화
앞에서 살펴본 암호화는 처음 데이터베이스를 생성하는 시점에 암호화를 적용했다. 기존에 있는 데이터베이스를 암호화 하기 위해서는 ChangeFileEncryption 툴을 사용해야 한다. 이 툴을 이용하면 데이터베이스를 암호화 및 복호화를 할 수 있으며, 파일 암호화 키를 변경할 수 있다. 커맨드 환경 또는 자바 코드에서 다음과 같은 코드를 실행하면 된다.
다음 코드는 유저 홈 디렉토리에서 파일 암호 filepwd와 암호화 알고리즘 AES를 사용해서 test 데이터베이스를 암호화 한다.
java -cp h2*.jar org.h2.tools.ChangeFileEncryption -dir ~ -db test -cipher AES -encrypt filepwd
ChangeFileEncryption.execute("~", "test", "AES", decryptPassword, encryptPassword, false);
'Database' 카테고리의 다른 글
MySQL "Every derived table must have its own alias" 에러 처리 (0) | 2019.04.23 |
---|---|
티베로 데이터베이스 설치 시 "Boot the server as NOMOUNT" 에러 (0) | 2019.04.23 |
티베로 제약조건(Constraints) 정보 조회 (0) | 2019.04.22 |
MySQL ERROR 1217 (23000) Cannot delete or update a parent row: a foreign key constraint fails (0) | 2019.04.22 |
티베로 함수, 패키지, 프로시저 등 저장 오브젝트 쿼리 추출하기 (0) | 2019.04.22 |
댓글