본문 바로가기
IT 개발/JavaScript

[javascript] base64 사용방법 - 인코딩, 디코딩 (btoa, atob)

by Love of fate 2023. 10. 14.
728x90
반응형

 

Base64란 바아너리 데이터를 64진법 표현으로 변환하여 정해진  ASCII 문자 집합으로 표현하는 바이너리-텍스트 인코딩 첵계이다. 이는 일반적으로 바이너리 데이터를 전송할 수 없는 미디어에서 전송 작업을 할 수 있도록 바이너리 데이터를 문자열로 인코딩하는데 사용된다. Base64는 전송중에 이진 데이터가 손실되지 않도록 해준다.

 

 

Base64는 암호화나 압축하는 체계가 아니다 네트워크를 통해 난독화된 문자열을 전송할 수 있도록 바이너리 데이터를 ASCII 문자 집합으로 변환한다. 

예를 들면 텍스트 데이터를 받는 이메일 서버에서 이미지나 파일을 보내는 경우가 있다

이 때 파일을 텍스트 형식으로 인코딩 해야한다.

 

원시 바이너리 데이터를 Base64 문자열로 인코딩 및 디코딩 하기 위해 Javascript에서는 btoa(), atob() 함수를 지원한다.

 

Base64 Encoding - btoa()

btoa() 메소드는 바이너리 데이터를 Base64로 인코딩된 ASCII 문자열로 만드는데 사용한다. 

바이너리 문자열을 매개변수로 받아 Base64로 인코딩된 ASCII 문자열을 반환한다.

기본적으로 btoa() 메소드는 바이트로 이루어진 바이너리 데이터를 매개변수로 전달해도 잘 작동한다. 만약 입력 값에 유니코드 문자같이 8비트 이상의 크기를 가지는 문자가 포함되면 btoa() 메소드는 exception을 발생한다

 

유니코드 문자를 인코딩하려면 먼저 입력 문자열을 8비트 바이트 배열(UTF-8 처럼)로 변환한다음 btoa() 메소드를 사용하여 다음 예제와 같이 Base64로 인코딩해야 한다

 

Base64 Decoding - atob()

atob() 메소드는 Base64로 인코딩된 문자열을 일반 문자열로 디코딩한다

atob() 메소드는 Base64 문자열이 순수하게 8비트로 이루어진 문자열일때만 완벽하게 작동한다.

인코딩된 입력 값이 16비트 유니코드 문자가 포함되어있다면 디코딩되지 않는다.

 

유니코드 DOM 문자열을 처리하기 위해서는 Base64 인코딩 바이트를 퍼센트 인코딩으로 변환한 다음 decodeURIComponent() 메소드를 사용하여 디코딩해야 한다

 

정리

Base64는 바이너리 데이터를 ASCII 문자 스트림으로 안전하게 전송하기위해 널리 쓰이는 인코딩 체계이다.

물론 Base64 인코딩을 안하고 네트워크를 통해 그냥 바이너리 데이터를 보낼 수도 있다. 하지만 모든 응용프로그램과 네트워크 통신 장치가 원시 바이너리 데이터를 처리할 수 있는 것은 아니기 때문에 때로는 위험할 수도 있다. 반면에 ASCII 문자 집합은 대부분의 응용프로그램에서 다루기가 간편하다.

728x90
반응형