본문 바로가기

Base64 디코딩 방법 총정리 - 온라인 도구부터 자바스크립트, 파이썬 명령어까지 한번에

등호로 끝나는 알 수 없는 문자열, Base64일 확률이 높습니다. 설치 없이 브라우저에서 바로 디코딩하는 방법부터 한글 깨짐 해결법까지 실제로 쓰는 방법만 정리했습니다.


Base64 디코딩 방법 총정리 - 온라인 도구부터 자바스크립트, 파이썬 명령어까지 한번에

개발 작업이나 웹 서핑을 하다 보면 aGVsbG8gd29ybGQ=처럼 영문과 숫자가 뒤섞여 있고 등호(=)로 끝나는 문자열을 만날 때가 있습니다. 이메일 원본 보기, JWT 토큰, API 응답, 이미지 데이터 URL에서 특히 자주 등장합니다. 이런 문자열은 대부분 Base64로 인코딩된 데이터이며, 올바른 Base64 디코딩 방법만 알면 몇 초 만에 원래 내용을 확인할 수 있습니다. 온라인 도구부터 브라우저 콘솔, 파이썬, 운영체제 명령어까지 상황별로 가장 빠른 방법을 정리했습니다.

Base64 인코딩의 원리 이해하기

Base64는 이진 데이터를 64개의 안전한 문자만으로 표현하는 인코딩 방식입니다. 이메일 첨부파일 전송 규격인 MIME에서 본격적으로 쓰이기 시작해 지금은 웹 전반의 표준으로 자리잡았습니다. 사용하는 문자는 다음 네 그룹입니다.

  • 대문자 A~Z: 26개
  • 소문자 a~z: 26개
  • 숫자 0~9: 10개
  • 특수문자 + /: 2개, 합계 64개

원리는 간단합니다. 원본 데이터를 3바이트(24비트)씩 잘라 6비트 네 조각으로 나누고, 각 조각을 64개 문자 중 하나로 바꿉니다. 3바이트가 4문자로 늘어나므로 인코딩 후 크기는 원본보다 약 33% 커집니다. 데이터 길이가 3의 배수가 아니면 부족한 자리를 등호(=)로 채우는데, 문자열 끝에 붙는 =가 바로 이 패딩입니다. 그래서 =로 끝나는 문자열을 보면 Base64를 의심할 수 있는 것입니다.

참고: URL이나 파일명에 쓰이는 URL-safe Base64는 +와 / 대신 -와 _를 사용합니다. 일반 디코더에서 오류가 난다면 -를 +로, _를 /로 바꾼 뒤 다시 시도해 보세요.

온라인 도구로 가장 빠르게 디코딩하기

코드를 전혀 몰라도 됩니다. 검색창에 Base64 decode를 입력하면 나오는 변환 사이트에 문자열을 붙여넣고 버튼 한 번만 누르면 끝납니다. 요즘은 디자인 작업에 쓰는 컬러 팔레트 생성기나 재미 삼아 돌려보는 로또번호 생성기처럼 설치 없이 브라우저에서 바로 쓰는 웹 도구가 보편화되어서, Base64 변환도 프로그램 설치 없이 처리하는 것이 자연스러운 흐름이 되었습니다.

온라인 도구의 장점과 한계

  • 설치와 회원가입 없이 즉시 사용할 수 있습니다
  • 텍스트뿐 아니라 파일 업로드 디코딩, 인코딩 변환을 함께 지원하는 곳이 많습니다
  • 단, 입력한 내용이 외부 서버로 전송될 수 있으므로 비밀번호나 API 키 같은 민감한 데이터에는 적합하지 않습니다

브라우저 콘솔에서 자바스크립트로 디코딩

크롬이나 엣지에서 F12 키를 눌러 개발자 도구를 열고 Console 탭에 아래 한 줄만 입력하면 됩니다. 데이터가 외부로 나가지 않고 내 브라우저 안에서만 처리되므로 민감한 정보도 안전합니다.

atob("aGVsbG8gd29ybGQ=")
// 결과: "hello world"

반대로 인코딩할 때는 btoa() 함수를 사용합니다. 두 함수 모두 모든 주요 브라우저에 내장되어 있어 별도 설치가 필요 없습니다.

파이썬과 운영체제 명령어로 디코딩하기

파일 단위 처리나 반복 작업 자동화가 필요하다면 파이썬과 터미널 명령어가 편리합니다. 환경별 방법을 표로 정리했습니다.

환경명령어 / 코드특징
파이썬base64.b64decode(문자열)표준 라이브러리, 설치 불필요
리눅스 / 맥echo "문자열" | base64 -d터미널에서 즉시 실행
윈도우certutil -decode 입력파일 출력파일기본 내장, 파일 단위 처리
브라우저atob("문자열")콘솔에서 한 줄로 해결

파이썬 코드 예시

import base64
result = base64.b64decode("aGVsbG8gd29ybGQ=")
print(result.decode("utf-8"))  # hello world

한글이 깨질 때 해결 방법

가장 많이 겪는 문제입니다. 자바스크립트의 atob()는 문자열을 1바이트 단위로만 해석하기 때문에, UTF-8로 인코딩된 한글은 안녕 같은 알 수 없는 문자로 깨져서 나옵니다. 이때는 TextDecoder로 UTF-8 변환 단계를 한 번 거쳐야 합니다.

const b64 = "7JWI64WV7ZWY7IS47JqU";
const bytes = Uint8Array.from(atob(b64), c => c.charCodeAt(0));
new TextDecoder("utf-8").decode(bytes);
// 결과: "안녕하세요"

파이썬에서는 b64decode() 결과 뒤에 .decode("utf-8")만 붙이면 되고, 온라인 도구에서는 문자셋 옵션을 UTF-8로 선택하면 대부분 해결됩니다.

팁: 디코딩 결과가 깨졌다면 데이터가 손상된 것이 아니라 문자셋 문제일 가능성이 높습니다. UTF-8로 안 되면 오래된 한국어 데이터에 쓰이던 EUC-KR로도 시도해 보세요.

디코딩할 때 반드시 알아야 할 주의사항

Base64는 암호화가 아니라 단순한 표현 방식의 변환입니다. 누구나 1초 만에 원문을 볼 수 있으므로, 비밀번호나 개인정보를 Base64로 바꿔 보관하는 것은 사실상 평문으로 저장하는 것과 같습니다.

실제로 로그인에 널리 쓰이는 JWT 토큰의 페이로드도 URL-safe Base64일 뿐이어서 누구나 내용을 읽을 수 있습니다. 반대 방향의 위험도 있습니다. 출처를 모르는 Base64 문자열은 악성 스크립트를 탐지 회피 목적으로 난독화한 것일 수 있으므로, 파일로 디코딩했다면 실행하기 전에 반드시 백신 검사를 거치는 것이 안전합니다.

지금 확인하고 싶은 문자열이 있다면 두 가지만 기억하세요. 먼저 F12를 눌러 콘솔에 atob()를 입력해 보고, 한글이 깨지면 위의 TextDecoder 코드를 그대로 붙여넣으면 됩니다. 민감한 데이터라면 온라인 도구 대신 콘솔이나 파이썬처럼 내 컴퓨터 안에서 처리되는 방법을 선택하는 것이 원칙입니다.

3일 무료체험큰손탐지기, 지금 바로 시작하세요

설치 없이 웹에서 바로 사용 가능 · PC & 모바일 지원

무료체험 시작
카카오톡 상담