MCP로 연결 →

계산 입력

공식

광고

결과

디코딩된 텍스트
Hello World
디코딩된 바이트 수 11
입력 문자 수 (공백 제외) 16
패딩 문자 수 1

Base64 디코더란?

Base64는 출력 가능한 64개의 ASCII 문자(A–Z, a–z, 0–9, +, /)를 사용해 바이너리 데이터를 표현하는 인코딩 방식입니다. HTML에 이미지를 직접 삽입하거나, JSON·URL로 데이터를 주고받거나, 이메일 첨부 파일을 인코딩할 때 널리 쓰입니다. 이 디코더는 그 과정을 거꾸로 되돌려, Base64 문자열을 원래의 일반 텍스트로 복원해 줍니다.

사용 방법

입력란에 Base64 문자열을 붙여넣거나 입력한 뒤 실행하세요. 이 도구는 공백을 모두 제거한 다음 문자를 디코딩하고, 변환된 텍스트와 함께 디코딩된 바이트 수, 입력 문자 수, 그리고 패딩 문자('=')가 몇 개 있었는지를 보여줍니다. 입력값에 Base64 문자 집합에 속하지 않는 문자가 포함되어 있으면 "유효하지 않음" 메시지가 표시됩니다.

원리 살펴보기

Base64 문자 하나는 6비트의 데이터를 표현합니다. 따라서 Base64 문자 4개는 \(4 \times 6 = 24\)비트를 담게 되고, 이는 8비트짜리 바이트 3개로 깔끔하게 나뉩니다. 원본 데이터의 길이가 3의 배수가 아닐 경우, 인코딩된 문자열의 길이가 항상 4의 배수가 되도록 '=' 패딩 문자를 1개 또는 2개 덧붙입니다. 디코딩할 때는 이 패딩을 제거하고 남는 비트를 버립니다.

$$\text{Bytes} = \left\lfloor \frac{6 \times \text{Base64 chars (no padding)}}{8} \right\rfloor$$
광고
각 6비트인 Base64 문자 4개를 8비트 바이트 3개로 재구성
Base64 문자 4개는 24비트를 담아 디코딩된 3바이트로 재구성됩니다.

예제로 이해하기

Base64 문자열 SGk=를 살펴봅시다. 각 문자는 \(S=18\), \(G=6\), \(k=36\)의 값에 대응하고, '='는 패딩입니다. 이진수로 나타내면 \(010010\ 000110\ 100100 \to 24\)비트가 되지만, 끝에 패딩이 붙어 있으므로 유효한 바이트는 2개뿐입니다: \(01001000\ (72 = \text{'H'})\)과 \(01101001\ (105 = \text{'i'})\). 따라서 결과는 Hi가 됩니다.

Base64 문자열이 비트를 거쳐 일반 텍스트로 변환되는 과정
디코더는 Base64 문자열을 원래 일반 텍스트로 되돌립니다.

Base64 알파벳 참고

표준 Base64 (RFC 4648)는 모든 6비트 값(0–63)을 64개의 출력 가능한 ASCII 문자 중 하나에 매핑합니다. 디코더는 각 문자를 읽고 이 표에서 6비트 인덱스를 찾은 다음 비트를 연결하고 8비트 바이트로 다시 그룹화합니다. 아래 표는 전체 알파벳과 각 문자에 할당된 인덱스를 나열합니다.

인덱스 문자 인덱스 문자 인덱스 문자 인덱스 문자
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

65번째 기호인 = (등호)는 데이터 문자가 아닙니다. 인코딩된 문자열의 끝에서 전체 길이가 항상 4자의 배수가 되도록 하는 패딩 마커입니다. 하나의 =는 최종 4자 그룹이 2바이트를 인코딩함을 의미하고, 두 개의 ==는 1바이트를 인코딩함을 의미합니다. 디코더는 패딩과 이것이 암시하는 초과 0비트를 버립니다.

추가 디코딩 예제

각 Base64 문자는 6비트를 제공합니다. 4개의 문자(24비트)는 정확히 3바이트로 디코딩되고, 부분 그룹은 패딩을 사용하므로 디코더가 유지할 바이트 수를 알 수 있습니다. 바이트 개수는 \(\text{바이트} = \left\lfloor \frac{6 \times n}{8} \right\rfloor\)를 따릅니다. 여기서 \(n\)은 실제(패딩이 아닌) 문자의 개수입니다.

예제 1 — 패딩 없음: "TWFu" → "Man"

  1. 인덱스: T=19, W=22, F=5, u=46.
  2. 6비트 그룹: 010011 010110 000101 101110.
  3. 바이트로 다시 그룹화: 01001101 01100001 01101110 = 77, 97, 110.
  4. ASCII 77, 97, 110 = M, a, n. \(n=4\)일 때: \(\lfloor 24/8 \rfloor = 3\) 바이트 — Man.

예제 2 — 한 개의 '=' 패드: "SGVsbG8=" → "Hello"

  1. 패딩 제거: 7개의 실제 문자 S,G,V,s,b,G,8.
  2. 인덱스: S=18, G=6, V=21, s=44, b=27, G=6, 8=60.
  3. 비트: 010010 000110 010101 101100 011011 000110 111100 (패드 그룹의 끝 2비트는 0 필러이며 버려집니다).
  4. 바이트: 01001000 01100101 01101100 01101100 01101111 = 72, 101, 108, 108, 111 = H, e, l, l, o.
  5. \(n=7\)일 때: \(\lfloor 42/8 \rfloor = 5\) 바이트 — Hello.

예제 3 — 두 개의 '==' 패드: "aGk="... 그리고 "TQ==" → "M"

  1. 패딩 제거: 2개의 실제 문자 T, Q.
  2. 인덱스: T=19, Q=16.
  3. 비트: 010011 010000; 처음 8비트만 유지하고, 나머지 4비트는 0 필러입니다.
  4. 바이트: 01001101 = 77 = M.
  5. \(n=2\)일 때: \(\lfloor 12/8 \rfloor = 1\) 바이트 — M.

다른 방향으로 진행하여 텍스트에서 이러한 문자열을 생성하려면 Base64 인코더를 사용하세요.

광고

주요 용어

Base64 알파벳
이진 데이터를 텍스트로 나타내는 데 사용되는 64개의 출력 가능한 문자(A–Z, a–z, 0–9, + 및 /)의 고정된 집합입니다. 각 문자는 0에서 63 사이의 6비트 값을 나타냅니다.
패딩('=')
인코딩된 문자열의 끝에 추가되는 등호로, 길이가 4자의 배수가 되도록 합니다. 데이터를 포함하지 않으며, 하나의 '='는 2바이트 최종 그룹을 표시하고 '=='는 1바이트 최종 그룹을 표시합니다.
섹스텟(6비트)
6비트의 그룹 — 단일 Base64 문자가 인코딩하는 단위입니다. 4개의 섹스텟(24비트)은 3개의 옥텟과 정확히 일치합니다.
옥텟 / 바이트(8비트)
8비트 단위로, 디코딩된 데이터의 한 바이트의 표준 크기입니다. Base64 디코딩은 섹스텟을 옥텟으로 다시 그룹화하며, 이진을 텍스트 변환기도 비트별로 이를 설명할 수 있습니다.
공백 제거
디코딩 전에 공백, 탭 및 줄 바꿈을 제거합니다. 많은 시스템이 긴 Base64(예: PEM 인증서, 이메일 MIME)에 줄 바꿈을 삽입합니다. 강력한 디코더는 이를 데이터로 처리하지 않고 이 공백을 무시합니다.
URL-안전 Base64
+를 -로, /를 _로 바꿔 문자열이 URL과 파일명에서 안전하도록 하는 변형(RFC 4648 §5)입니다. 패딩도 종종 생략됩니다. 표준 디코더를 사용하기 전에 이러한 문자를 다시 +와 /로 변환하세요. 주변 URL 자체는 URL 인코더 / 디코더 계산기를 참조하세요.

자주 묻는 질문

입력한 데이터가 어딘가로 전송되나요? 결과를 보여주기 위해 디코딩 처리는 서버 측에서 이루어지지만, 입력값은 저장되지 않습니다. 다만 민감한 정보는 붙여넣지 않는 것이 좋습니다.

왜 바이트 수가 4로 나누어떨어지지 않나요? 여기서 말하는 바이트 수는 디코딩된 출력 바이트 수이지 입력 문자 수가 아닙니다. 입력 문자 4개마다 최대 3개의 출력 바이트가 생성됩니다.

패딩은 무엇을 의미하나요? '='가 1개면 마지막 그룹에서 2바이트가 만들어졌다는 뜻이고, 2개면 1바이트가 만들어졌다는 뜻입니다. 패딩이 없으면 데이터 길이가 이미 3의 배수였다는 의미입니다.

최종 업데이트: