커뮤니티·지원
목차
< 용어사전으로 돌아가기
Base64

Base64는 이진(Binary) 데이터를 64개의 ASCII 문자로 구성된 문자열로 변환하는 인코딩 방식입니다. Base64를 사용하면 텍스트 기반 시스템에서도 이진 데이터를 안전하게 전송할 수 있다는 장점이 있어요. 예를 들어 이메일과 같은 텍스트 기반 프로토콜에서 이미지를 첨부할 때, 이미지를 base64로 변환해서 전송하면 데이터 손실 없이 안전하게 전달돼요.

토스페이먼츠 API의 에도 시크릿 키를 base64로 인코딩하는 절차가 있는데요. Base64가 시크릿 키를 암호화하거나 보호하지 않지만, HTTP 헤더로 안전하게 텍스트로 전송할 수 있게 해줘요. 그래서 base64는 인증서, 인증 키를 인코딩할 때도 많이 사용됩니다.

"Hello"를 base64로 인코딩하는 과정을 예시로 자세히 살펴볼게요. 먼저 각 문자를 아래와 같이 8-bit 이진 데이터로 변환합니다.

구분데이터
문자Hello
8-bit 이진 숫자0100100001100101011011000110110001101111

다음, Base64는 6-bit 단위를 사용하기 때문에 8-bit로 된 숫자를 6-bit 단위로 나눠줍니다. 만약에 마지막 단위가 6-bit가 안 되면 0으로 패딩을 해주세요. 패딩 뒤에는 =을 추가해서 패딩을 나타내고 인코딩 문자열의 길이가 4의 배수가 되도록 보장합니다.

각 6-bit 단위는 0부터 63의 값을 나타낼 수 있고(2^6=64), 각 값은 아래와 같이 특정 문자와 매핑됩니다. 그래서 "Hello"를 base64로 인코딩한 값은 SGVsbG8=가 되는 것이죠.

구분데이터
6-bit 그룹010010000110010101101100011011000110111100=
10진수 변환 값186214427660=
Base64 문자SGVsbG8=

Base64는 아래 규칙에 따라 값과 문자를 매핑해요.

문자
0-25A-Z
26-51a-z
52-610-9
62+
/63

Base64 인코딩 방법

하지만 다행히 어렵게 직접 인코딩할 필요는 없어요. 라이브러리를 사용하면 간단하게 인코딩, 디코딩을 할 수 있답니다.

토스페이먼츠 시크릿 키를 base64로 인코딩하는 예시를 알아볼게요. 아래 시크릿 키는 문서용 공개 키입니다. 나만의 시크릿 키는 로그인한 다음에 개발자센터의 API 키 메뉴에서 확인하세요.

Terminal

아래 커맨드를 사용하면 터미널에서 간편하게 base64 인코딩을 확인할 수 있어요.

Java

Base64 클래스encodeToString, decode 메서드를 사용하면 됩니다.

JavaScript

btoa() 메서드로 base64 인코딩하고, atob()로 디코딩할 수 있어요.

Python

base64 모듈을 불러와서 b64encode, b64decode메서드를 사용하면 됩니다.

  • 더 궁금한 내용이 있나요?
  • 코드 샘플을 참고하세요
  • 기술지원이 필요한가요?
    실시간 문의|이메일 보내기