DBMS_OBFUSCATION_TOOLKIT.DES3ENCRYPT 를 이용한 암호화시 문의드립니다. 0 1 1,256

by 돼지뚱뙝이 [Oracle 기초] [2022.08.16 14:33:39]


암호화처리 해야하는 일이 생겨 sql펑션을 이용하여 암호화 처리를 하려고합니다.

기존에 만들어둔 암호화 펑션이 있어 사용해보니 한글을 암호화할경우 잘리는 현상이 발생하였습니다.

그래서 확인해보니 DBMS_OBFUSCATION_TOOLKIT.DES3ENCRYPT 를 이용한 암호화였고 https://oracle.tistory.com/362 사이트를 참고 하여 보니

암호화쳐리 할때 pieces_of_eight INTEGER := ((FLOOR(LENGTH(str)/8 + .9)) * 8);, input_string  => RPAD(str, pieces_of_eight )를 이용하여 암호화할 데이터의 크기를 계산하는 부분이 들어가 있는대

영문처리할때는 문제가없었는대 한글처리할때 사이즈문제때문에 잘림현상이 발생하는거같습니다. 계산하는 부분을   pieces_of_eight INTEGER := ((FLOOR(LENGTH(str)/4 + .9)) * 8)처럼 바꿔 사용해도문제가 없을까요? 8 => 4 

암호화하려는 데이터에 적용하여 사용하니 문제가 발생하지는 않았습니다. 물론 데이터양이적어 특이사항이 발생안할걸 수도 있는대.. 나중에라도 문제가 생길까하여 문의드립니다.

제가 글쓰는 제주가 부족하여 글이 좀 중구 난방입니다. 죄송하니다.

by 창조의날개 [2022.08.18 16:48:19]

대상 문자의 길이를 정확이 계산하지 못하는 원인이

LENGTH(str)로 길이를 확인하기 때문입니다.

LENGTHB(str)로 변경해서 한글인 경우 Byte 단위로 계산할 수 있도록 하시면 될듯합니다.

그럼 UTF8로 셋팅된 경우 한글 한자는 3Byte로 길이가 3이 될 것입니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입