2013. 3. 21. 11:16ㆍ데이터전환
평문으로 암호화 크기 추정
[가정]
1. 블록 암호화(128 비트) : 블록의 크기 따라 달라짐, 평문이 블록 크기에 맞지 않으면 나머지 비트를 패딩 처리(주의점: 평문의 크기가 128비트(16바이트)인 경우 128를 패딩함)
2. 평문을 블록 크기로 패딩한 후의 크기(암호화 전)와 이를 암호화하여 만든 암호문의 크기는 동일함
예:) 평문의 크기가 13 바이트 인 경우 비트 수로 13 * 8 = 104 비트이므로 128비트로 맞추기 위해 24비트를 패딩하여 128비트로 맞춘 후 암호화를 하면 암호문의 크기는 128 비트임
[base64 엔코딩]
1. 입력비트열을 64개의 printable character로 값을 표현하기 위해 6비트로 나눈 후 64개의 문자로 매핑
2. base64 엔코딩의 비트 수를 3으로 나눈 나머지만큼 '=' 문자를 엔코딩 후 패딩함
예:) 128 비트 base64 엔코딩
1. 128 비트를 6비트로 나누어 정렬 6비트로 나누어 떨어지지 않는 경우 나머지 만큼 비트를 패딩함
128 = 21 * 6 + 2 ==> 4비트를 패딩하여 22 바이트로 표현
2. 128 = 3 * 42 + 2 (3으로 나눈 나머지가 2이므로) 두 개의 '=' 문자를 뒤에 패딩
3. 128 비트는 24 바이트로 암호화하여 DB에 저장함
[암호화 크기 추정 SQL ]
select rnum as "바이트 수" , rnum * 8 as "비트 수" , (floor(rnum*8/128)+1)*128 as "패딩 후 비트 수" , ceil((floor(rnum*8/128)+1)*128/6) + mod((floor(rnum*8/128)+1)*128,3) as "base64 바이트 수" from ( select rownum as rnum from all_objects where 1=1 and rownum <= 20 ) a where 1=1 order by a.rnum ; |
[암호화 크기 추정 값]
평문 바이트 수 |
평문 비트 수 |
패딩 후 평문 비트 수 |
base64 바이트 수 |
1 |
8 |
128 |
24 |
2 |
16 |
128 |
24 |
3 |
24 |
128 |
24 |
4 |
32 |
128 |
24 |
5 |
40 |
128 |
24 |
6 |
48 |
128 |
24 |
7 |
56 |
128 |
24 |
8 |
64 |
128 |
24 |
9 |
72 |
128 |
24 |
10 |
80 |
128 |
24 |
11 |
88 |
128 |
24 |
12 |
96 |
128 |
24 |
13 |
104 |
128 |
24 |
14 |
112 |
128 |
24 |
15 |
120 |
128 |
24 |
16 |
128 |
256 |
44 |
17 |
136 |
256 |
44 |
18 |
144 |
256 |
44 |
19 |
152 |
256 |
44 |
20 |
160 |
256 |
44 |
[활용]
개인정보, 회사의 기밀을 DB에 암호화하여 저장할 경우
해당 컬럼의 max 길이(한글포함하는 경우 lengthb)를 구한 다음 위 추정식을 이용하여 테이블의 컬럼 크기를 조정하는데 사용
'데이터전환' 카테고리의 다른 글
EXTERNAL TABLE 딕셔너리 (0) | 2013.03.21 |
---|---|
오라클 한글 Characterset (0) | 2013.03.12 |
expdp, impdp 의 여러가지 데이터 추출 및 적재 옵션 (0) | 2013.03.12 |
CLOB 컬럼 저장 구조 (0) | 2013.03.11 |
LOB STORAGE의 STORAGE IN ROW 옵션 (0) | 2013.02.16 |