블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
04-16 08:35
 

달력

« » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
 

최근에 올라온 글

최근에 달린 댓글

'base64'에 해당되는 글 1건

  1. 2013.02.14 BASE64 검증이라...

BASE64 검증이라...

JAVA / 2013. 2. 14. 09:57

요즘 회사에서 메일엔진 부분을 맡고 있다. 

간혹 본문이 깨져서 들어오거나 들어오지 않는 경우가 있어 확인해보니 헤더에 base64 로 인코딩을 한다고 정의해 놓고 본문을 인코딩 안하고 한 경우가 대다수이다.


Content-Transfer-Encoding: base64


그전에 개발하시던 팀장님은 이런 경우에 대한 처리를 해 놓으셨는데, 역시 실전은 케바케...


케바케가 발생한 부분은 본문부가 base64 인지 체크하는 로직이였다. 기존 로직은 55 bytes 를 가지고 와서 base64 디코딩을 해서 익셉션이 발생하느냐 안하느냐를 체크...



조금 더 정확하게 체크하기 위해 base64 를 조사해보았다.

(참고자료: http://bbolmin.tistory.com/46)


8bit 로 이루어진 데이터를 6bit 씩 짤라서 총 64개의 문자열로 표현하는 방식. 

base64 로 인코딩된 문자열이 8자리라면 총 48bit... 디코딩을 하게되면 6 bytes 데이터가 된다.

결국 55자리라면 330bit... 디코딩을 하게되면 41 bytes 와 잉여 데이터가 2 bits 가 남게 된다.


나이가 들어 계산이 어렵다고 판단하여 8과 6의 배수 bytes 를 읽어들이면 되지 않을까???(지금까지는...)

그래서 기존 55 bytes 가 아닌 48 bytes 를 읽어들여 base64 인코딩을 판단하도록 로직을 변경...


참고로... 어차피 base64 로 인코딩된 데이터는 A~Z, a~z, 0~9, /, = 으로만 이루어져 있다.

아래와 같은 로직을 추가한다면 조금 더 정밀해지긴 할텐데... 케바케가 무서워 그냥 48 bytes 를 처리하는 로직처리만 했다.

Pattern base64Pattern = Pattern.compile("[A-Za-z0-9\\/=]+");

Matcher base64Matcher = base64Pattern.matcher(_testString);


return base64Matcher.find();









Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백