← 모든 도구

Base64 인코딩 및 디코딩

브라우저에서 Base64를 즉시 인코딩·디코딩하세요. Base64가 무엇인지, 크기가 33% 증가하는 이유, 암호화가 아닌 인코딩인 이유를 알아보세요.

Base64란 무엇이며 왜 존재하는가

Base64는 이진 데이터를 텍스트로 변환하는 인코딩 방식입니다. 이미지, 압축 파일, 암호화 키, 또는 일반 텍스트가 아닌 모든 데이터를 구성하는 원시 바이트를 받아, 64개의 인쇄 가능한 문자로 이루어진 안전한 알파벳으로 다시 씁니다. 알파벳은 대문자 A-Z 26개, 소문자 a-z 26개, 숫자 0-9 10개, 그리고 추가 기호 두 개(보통 +/)로 구성됩니다. 패딩에는 등호를 사용합니다. 생성되는 모든 문자가 일반 ASCII이므로, 텍스트만 처리하도록 설계된 시스템에서도 결과물을 전송할 수 있습니다.

Base64가 만들어진 이유가 바로 여기 있습니다. 이메일이 대표적인 예인데, 많은 오래된 프로토콜은 전달하는 콘텐츠가 텍스트라고 가정합니다. 원시 이진 데이터를 그대로 전달하면 일부 바이트가 손상되거나, 제거되거나, 제어 문자로 해석되어 데이터가 손상된 채로 도착합니다. Base64는 바이트를 텍스트 안전 채널이 그대로 통과시킬 수 있는 형태로 변환하여 이 문제를 해결합니다. 원본 데이터는 반대편에서 정확하게 복원할 수 있습니다.

Abstract glowing stream of binary data transforming into a text character stream in dark indigo with cyan and gold light
Base64는 원시 바이트를 안전하고 텍스트 친화적인 문자 스트림으로 변환합니다.

변환 원리

기술적으로 Base64는 입력을 3바이트(즉 24비트) 단위로 묶은 뒤, 그 24비트를 6비트씩 4개 그룹으로 재분할합니다. 6비트는 64가지 값을 표현할 수 있으며, 알파벳이 정확히 64개의 문자를 가지는 이유가 바로 그것입니다. 따라서 입력 3바이트는 항상 출력 4문자가 됩니다. 입력 길이가 3의 배수가 아닐 때는, 디코더가 실제 데이터가 끝나는 위치를 알 수 있도록 인코더가 마지막 그룹에 = 문자 하나 또는 두 개를 패딩으로 붙입니다.

이 4대3 비율이 바로 잘 알려진 크기 패널티의 원인입니다. Base64 출력은 원본 데이터보다 약 33% 큽니다. 이메일 표준에서 자주 요구하는 것처럼 인코딩된 텍스트가 고정 너비 줄로 나뉘면, 줄 바꿈 때문에 추가로 몇 퍼센트가 더 붙습니다. 이 오버헤드는 호환성을 위해 치르는 대가이며, 대부분의 용도에서 공정한 거래입니다.

Base64를 어디서 만나는가

무엇을 찾아야 하는지 알면, 일상적인 컴퓨팅에서 Base64를 어디서나 만날 수 있습니다.

  • 데이터 URI. 작은 이미지나 폰트를 data: URI와 함께 Base64로 작성된 파일 내용으로 HTML이나 CSS에 직접 삽입할 수 있습니다. 브라우저가 인라인으로 디코딩하여 별도의 네트워크 요청을 절약합니다.
  • 이메일 첨부 파일. 이메일이 파일을 전달할 수 있게 하는 표준인 MIME은, 텍스트 전용 메일 시스템을 통해 이진 첨부 파일을 손상 없이 전달하기 위해 Base64를 활용합니다.
  • HTTP 기본 인증. 익숙한 Authorization: Basic ... 헤더는 사용자 이름과 비밀번호를 콜론으로 연결한 뒤 Base64로 인코딩한 것으로, 기본 인증이 항상 HTTPS에서 실행되어야 하는 정확한 이유입니다.
  • 토큰과 설정. JSON Web Token, 인증서, SSH 키, 수많은 설정 값이 복사-붙여넣기와 텍스트 기반 저장을 안전하게 처리할 수 있도록 Base64로 저장되거나 전송됩니다.

인코딩은 암호화가 아닙니다

이것이 가장 중요하게 이해해야 할 사항이며, 초보자와 숙련된 개발자 모두가 여기서 실수합니다. Base64는 암호화가 아니며 보안 기능이 전혀 없습니다. 비밀 키도 없고, 비밀번호도 없으며, 비공개적인 요소가 전혀 없습니다. 변환은 완전히 공개적이며 완전히 되돌릴 수 있습니다. Base64 문자열을 보는 누구든 바로 이 도구 같은 것을 사용하여 즉시 원본 바이트로 디코딩할 수 있습니다.

따라서 Base64는 비밀번호, API 키, 또는 민감한 값을 숨기기에 적합하지 않습니다. 문자열이 뒤섞인 것처럼 보인다고 해서 보호되는 것이 아닙니다. 반면 암호화는 비밀 키로 데이터를 변환하여 해당 키를 가진 사람만 읽을 수 있게 합니다. 두 가지는 서로 다른 문제를 해결합니다. 암호화는 기밀성을 보호하고, Base64는 호환성을 보호합니다. 두 가지는 종종 함께 사용되지만(AES로 데이터를 암호화한 후 텍스트 채널을 통해 전송할 수 있도록 암호문을 Base64로 인코딩하는 식으로), 하나가 다른 하나의 대체제가 될 수는 없습니다.

An abstract image dissolving into a flowing stream of glowing characters and reassembling, indigo navy with cyan and gold
인코딩과 디코딩은 완벽하게 가역적이며, 어떠한 비밀도 제공하지 않습니다.

인코딩과 디코딩

두 방향은 단순한 거울 이미지입니다. 인코딩은 원본 텍스트나 이진 데이터를 받아 Base64 문자열을 생성합니다. 디코딩은 Base64 문자열을 받아 정확한 원본 바이트를 복원합니다. 우리의 도구는 브라우저에서 직접 두 방향 모두를 처리합니다. 입력하거나 붙여넣은 것은 절대 서버로 전송되지 않으므로, 데이터가 페이지를 벗어나지 않아 완전히 로컬하고 비공개적인 작업이 됩니다. 따라서 디버깅 중인 토큰을 디코딩하거나, 삽입하려는 스니펫을 인코딩할 때 안전하게 사용할 수 있습니다.

관련 변환에 대해서는 퍼센트 인코딩을 위한 URL 인코드/디코드 도구를, 또는 토큰 내의 Base64 세그먼트를 검사해야 할 때는 JWT 디코더를 참조하세요. 나머지 개발자 도구와 함께 이용할 수 있습니다.

자주 묻는 질문

Base64는 암호화의 한 형태인가요?

아니요. Base64는 인코딩이지 암호화가 아닙니다. 키를 사용하지 않으며 누구나 완전히 되돌릴 수 있어 보안을 제공하지 않습니다. 민감한 데이터 보호에는 AES나 RSA 같은 실제 암호화를 사용하세요.

Base64는 왜 데이터를 더 크게 만드나요?

Base64는 입력 3바이트마다 출력 문자 4개로 변환하여 크기가 약 33% 늘어납니다. 출력이 고정 길이 줄로 분할되면, 줄 바꿈 때문에 추가로 몇 퍼센트가 더 붙습니다.

Base64에서 사용하는 문자는 무엇인가요?

표준 알파벳은 대문자 26개, 소문자 26개, 숫자 0부터 9까지, 더하기 기호와 슬래시 기호이며, 끝에 패딩으로 등호를 사용합니다.

Base64로 비밀번호를 안전하게 저장할 수 있나요?

아니요. Base64는 데이터의 외형만 바꿀 뿐, 누가 읽을 수 있는지는 바꾸지 않습니다. 누구든 즉시 디코딩할 수 있습니다. 비밀번호는 강력한 알고리즘으로 해시해야 하며, 비밀 정보는 암호화해야 합니다.

이 Base64 도구는 비공개인가요?

예. 인코딩과 디코딩은 브라우저 내에서만 이루어집니다. 입력한 내용은 어떤 서버에도 업로드되거나 전송되지 않으므로, 데이터가 사용자 기기에 머물게 됩니다.

인코딩과 디코딩의 차이점은 무엇인가요?

인코딩은 원본 텍스트나 이진 데이터를 Base64 문자열로 변환합니다. 디코딩은 그 반대로, Base64 문자열을 정확한 원본 바이트로 되돌립니다. 두 가지는 거울 작업입니다.