Base64의 정의
Base64란, 바이너리 데이터를 ASCII 문자열로 전환하기 위한 인코딩 중 하나입니다.
보통은 바이너리 데이터로 표현되는 실행 파일 등을 전송하는 데 Base64 방식을 이용하여 작업합니다.
또한 클라이언트-서버 단에 전송되는 데이터 타입을 통일하여 데이터타입을 잘못 입력하여 발생하는 문제를 방지하거나
요청-응답에 대해 Filter단에서 문자열 치환- XSS 방지 기능을 거칠 경우 Base64를 통해 우회하기도 합니다.
Javascript Base64 인코딩-디코딩
Javascript에서는 전역객체 window의 btoa() , atob() 함수를 이용해 Base64 인코딩-디코딩 기능을 사용할 수 있습니다.
btoa() 함수를 사용할 때는, 인코딩 방식에 주의하여 사용해야 합니다.
MDN의 btoa() 함수에 대한 설명을 보면, Javascript String 객체를 기준으로 설계되어 있기 때문에
하나의 문자열이 1Byte를 넘는 경우 ( 이모지 등 ) 에러가 발생합니다.
이때는 해당 문자열을 Javascript String 기준의 UTF-16에 맞추어 변환시켜주어야 합니다.
Java Base64 인코딩-디코딩
Java는 java.util 패키지에 Base64 클래스를 제공합니다.
Nested Class(내부클래스)로 Base64.encoder, Base64.decoder를 제공합니다.
java.net의 urlDecoder 역시 base64 형태로 보내진 URL을 UTF-8 등으로 디코딩할 수 있습니다.
여러분도 Javascript의 btoa(), atob(),
Java의 java.util.Base64 Class를 이용하여 바이너리 데이터를 전송해보시기 바랍니다.
참고자료
Java Document, Java.util.Base64 : https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/Base64.html
MDN, btoa() : https://developer.mozilla.org/en-US/docs/Web/API/btoa
MDN, Base64 : https://developer.mozilla.org/en-US/docs/Glossary/Base64
'정보게시판 > 웹' 카테고리의 다른 글
네트워크 통신의 포트(Port) (1) | 2022.06.26 |
---|---|
Apple WWDC 개발자 컨퍼런스 소개 (0) | 2022.06.26 |
테스트를 위한 더미 파일 생성하기 (0) | 2022.06.18 |
Redis, 인메모리 데이터베이스(In-Memory Database) (0) | 2022.06.13 |
SmallTalk, 객채 지향 프로그래밍 언어 소개 (0) | 2022.06.12 |