Base64 디코딩 방법 완벽 정리 - 온라인 도구부터 브라우저, 명령어까지
이메일 첨부파일, JWT 토큰, 데이터 URI에 숨은 Base64 문자열을 원래 데이터로 되돌리는 모든 방법을 환경별로 정리했습니다. 복사 한 번이면 끝납니다.
![]()
이메일 소스 코드를 열었더니 알파벳과 숫자가 끝없이 이어진 이상한 문자열이 보입니다. 개발자 도구로 사이트를 뜯어봤더니 이미지 자리에 data:image/png;base64,iVBORw0K... 같은 긴 코드가 박혀 있습니다. JWT 토큰을 해독해 안에 무슨 정보가 들어있는지 확인하고 싶을 때도 마찬가지입니다. 이 알 수 없는 문자열들의 정체는 대부분 Base64입니다.
읽을 수 없어 보이지만 사실 누구나 몇 초 만에 원래 내용으로 되돌릴 수 있습니다. 환경별로 가장 빠른 디코딩 방법을 정리했습니다.
Base64란 무엇이고 왜 디코딩이 필요할까
Base64는 이미지나 파일 같은 이진 데이터를 텍스트 문자로 변환하는 인코딩 방식입니다. 영문 대소문자 52개, 숫자 10개, 그리고 + / 두 기호를 합친 총 64개의 문자만 사용하기 때문에 Base64라는 이름이 붙었습니다. 길이를 4의 배수로 맞추기 위해 끝에 = 기호로 패딩을 채우기도 합니다.
왜 이런 변환이 필요할까요. 이메일이나 일부 통신 규약은 원래 텍스트만 안전하게 전달하도록 설계되어 있습니다. 그림 파일을 그대로 보내면 중간에 깨질 수 있어, 텍스트로 한번 바꿔서 보낸 뒤 받는 쪽에서 다시 원래대로 되돌립니다. 이 되돌리는 과정이 바로 디코딩입니다.
Base64는 암호화가 아닙니다. 누구나 디코딩하면 원본을 볼 수 있으므로 비밀번호나 민감 정보를 Base64로만 처리해 안심하면 큰 보안 사고로 이어집니다.
실제로 Base64를 마주치는 대표적인 상황은 다음과 같습니다.
- 이메일 첨부파일: MIME 형식으로 인코딩된 첨부 데이터
- 웹페이지 data URI: HTML이나 CSS에 직접 박아 넣은 이미지와 폰트
- JWT 토큰: 로그인 인증에 쓰이는 토큰의 헤더와 페이로드
- API 응답: 바이너리 데이터를 JSON으로 주고받을 때
온라인 도구로 디코딩하는 방법
설치 없이 가장 빠른 방법은 웹 기반 Base64 디코더입니다. 검색창에 'Base64 decode'를 입력하면 여러 무료 도구가 나옵니다. 사용법은 어디나 거의 같습니다.
기본 3단계
- 입력창에 Base64 문자열을 붙여넣습니다
- Decode 버튼을 누릅니다
- 출력창에 변환된 원본 텍스트가 나타납니다
온라인 도구는 편리하지만 한 가지 주의점이 있습니다. 회사 내부 정보나 인증 토큰처럼 민감한 데이터는 외부 서버에 붙여넣지 않는 것이 안전합니다. 입력값이 서버로 전송될 수 있기 때문입니다. 이런 경우에는 아래에서 설명할 브라우저나 명령어 방식을 권합니다.
브라우저와 명령어로 디코딩하기
외부 사이트에 데이터를 넘기지 않고 내 컴퓨터에서만 처리하고 싶다면 두 가지 방법이 깔끔합니다.
브라우저 개발자 도구 (atob)
크롬이나 엣지에서 F12를 눌러 콘솔(Console) 탭을 엽니다. 그리고 다음을 입력합니다.
atob("7JWI64WV7ZWY7IS47JqU")
atob는 브라우저에 기본 내장된 Base64 디코딩 함수입니다. 별도 설치가 전혀 필요 없습니다. 다만 한글처럼 영어가 아닌 문자는 atob만으로는 깨질 수 있어, 다음과 같이 한 줄 더 감싸주면 정확하게 나옵니다.
decodeURIComponent(escape(atob("문자열")))
명령어 (터미널)
맥과 리눅스에는 base64 명령어가 기본 설치되어 있습니다. 윈도우는 PowerShell이나 WSL을 사용합니다.
| 환경 | 디코딩 명령어 |
|---|---|
| 맥 / 리눅스 | echo "문자열" | base64 -d |
| 윈도우 (PowerShell) | [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("문자열")) |
| 파일로 저장 | base64 -d input.txt > output.png |
-d(디코딩)와 별도로 운영체제마다 차이가 있습니다. 리눅스는 base64 -d, 일부 환경은 base64 -D(대문자)를 씁니다. 오류가 나면 대소문자를 바꿔보세요.프로그래밍 언어별 디코딩 코드
반복 작업이나 자동화가 필요하다면 코드로 처리하는 것이 효율적입니다. 주요 언어의 디코딩 방법을 정리했습니다.
| 언어 | 디코딩 코드 |
|---|---|
| Python | base64.b64decode(s).decode('utf-8') |
| JavaScript (Node) | Buffer.from(s, 'base64').toString('utf-8') |
| Java | new String(Base64.getDecoder().decode(s)) |
| PHP | base64_decode($s) |
Python 예시를 조금 더 풀어보면 다음과 같습니다. import base64로 모듈을 불러온 뒤, base64.b64decode()에 문자열을 넣으면 바이트 데이터가 나오고, .decode('utf-8')로 사람이 읽을 수 있는 글자로 바꿉니다. URL에 안전한 변형(URL-safe Base64)을 다룰 때는 urlsafe_b64decode()를 대신 사용합니다. JWT 토큰의 각 부분이 바로 이 URL-safe 방식으로 인코딩되어 있습니다.
디코딩이 안 될 때 점검할 것들
분명히 Base64처럼 보이는데 오류가 난다면 대부분 아래 세 가지 중 하나입니다.
- 패딩 누락: 길이가 4의 배수가 아니면 오류가 납니다. 끝에
=를 1개나 2개 붙여 4의 배수로 맞춰보세요 - URL-safe 변형:
+가-로,/가_로 바뀐 형태입니다. URL-safe 전용 디코더를 써야 합니다 - 공백과 줄바꿈: 복사 과정에 섞인 공백이나 줄바꿈을 제거하면 해결되는 경우가 많습니다
Base64 디코딩은 한 번 익혀두면 개발은 물론 일상적인 문제 해결에도 쓰임새가 많습니다. 인터넷에는 이처럼 작은 변환 한 번으로 작업을 줄여주는 무료 도구가 많습니다. 가령 대출 이자를 빠르게 가늠해야 할 때는 대출 계산기, 잠깐 머리를 식히며 번호를 뽑아볼 때는 로또번호 생성기 같은 도구가 그렇습니다. 필요할 때 즐겨찾기에 두면 유용합니다.
지금 당장 손에 든 알 수 없는 문자열이 있다면, 민감한 정보가 아니라면 온라인 디코더에 붙여넣어 1초 만에 확인하고, 인증 토큰처럼 민감하다면 브라우저 콘솔의 atob나 터미널의 base64 -d로 내 컴퓨터에서만 안전하게 풀어보세요.