Base64의 정의 

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

 

Base64 (Java SE 15 & JDK 15)

public class Base64 extends Object This class consists exclusively of static methods for obtaining encoders and decoders for the Base64 encoding scheme. The implementation of this class supports the following types of Base64 as specified in RFC 4648 and RF

docs.oracle.com

 

MDN, btoa()  :  https://developer.mozilla.org/en-US/docs/Web/API/btoa

 

btoa() - Web APIs | MDN

The btoa() method creates a Base64-encoded ASCII string from a binary string (i.e., a string in which each character in the string is treated as a byte of binary data).

developer.mozilla.org

 

MDN, Base64  : https://developer.mozilla.org/en-US/docs/Glossary/Base64

 

Base64 - MDN Web Docs Glossary: Definitions of Web-related terms | MDN

Base64 is a group of similar binary-to-text encoding schemes that represent binary data in an ASCII string format by translating it into a radix-64 representation. The term Base64 originates from a specific MIME content transfer encoding.

developer.mozilla.org

 

+ Recent posts