{ }

Base64 인코딩 디코딩 rfc 4648

텍스트를 Base64로 인코딩하거나 Base64 문자열을 UTF-8 텍스트로 디코딩합니다. 한글 등 멀티바이트 문자와 URL-safe 변형을 지원합니다.

mode
options
INPUTplain text
0 lines 0 chars
1
OUTPUTbase64
0 lines 0 chars
1
encoding: UTF-8
도구 설명

이 도구가 하는 일

Base64는 8비트 바이너리 데이터를 ASCII 문자 64개만으로 표현하는 인코딩 방식입니다. 원본 데이터를 3바이트(24비트) 단위로 끊은 뒤 6비트씩 네 조각으로 나누고, 각 조각을 A-Z, a-z, 0-9, +, / 중 하나에 대응시킵니다. 3바이트로 나누어떨어지지 않으면 남는 자리를 = 기호로 채우는데 이것을 패딩이라고 합니다. 6비트를 8비트 문자 하나로 표현하기 때문에 인코딩 결과는 원본보다 약 33% 길어집니다.

Base64가 필요한 이유는 텍스트만 안전하게 전달되는 통로가 많기 때문입니다. 이메일 본문, JSON 문자열 필드, HTTP 헤더, XML 속성 같은 곳에 이미지나 압축 파일 같은 바이너리를 그대로 넣으면 제어 문자나 인코딩 차이 때문에 데이터가 깨집니다. Base64로 바꾸면 어떤 바이너리든 안전한 ASCII 문자열이 되므로 이런 통로를 그대로 통과할 수 있습니다.

이 도구는 브라우저에서 동작하며 입력값을 서버로 보내지 않습니다. 한글처럼 UTF-8에서 여러 바이트를 차지하는 문자도 바이트 단위로 정확히 처리하고, URL과 파일 이름에서 문제를 일으키는 +와 / 를 -와 _ 로 바꾸는 URL-safe 방식도 지원합니다.

언제 사용하나요

API 응답에 들어 있는 Base64 필드의 실제 내용을 확인할 때, JWT의 header와 payload를 눈으로 확인할 때, HTML이나 CSS에 이미지를 Data URI로 직접 넣기 위해 변환할 때, HTTP Basic 인증 헤더의 아이디와 비밀번호 조합을 확인할 때, 로그에서 발견한 정체불명의 긴 문자열이 무엇인지 풀어볼 때 사용합니다. 설정 파일이나 쿠버네티스 Secret 값처럼 Base64로 저장되는 값을 검토할 때도 자주 쓰입니다.

입력과 출력 예시

입력 Hello, devtools
출력 SGVsbG8sIGRldnRvb2xz

영문과 기호는 1바이트씩 처리되어 15자가 20자로 늘어납니다.

입력 한글 테스트
출력 7ZWc6riAIO2FjOyKpO2KuA==

한글은 UTF-8에서 글자당 3바이트라 결과가 더 길어지고, 끝에 패딩 = 이 붙습니다.

입력 c3ViamVjdD9kYXRhPjE=
출력 subject?data>1

디코딩 방향. 패딩까지 포함해 입력해야 정확히 복원됩니다.

주의사항

Base64는 암호화가 아니라 누구나 되돌릴 수 있는 단순 변환입니다. 비밀번호나 API 키를 Base64로 바꿔 저장하는 것은 아무런 보안 효과가 없습니다. 디코딩이 실패한다면 패딩(=)이 잘려 있거나, URL-safe 변형(-, _)이 섞여 있거나, 줄바꿈이 포함되어 있는 경우가 많습니다. 또한 Base64 디코딩 결과가 반드시 읽을 수 있는 텍스트인 것은 아닙니다. 원본이 이미지나 압축 파일이면 깨진 문자로 보이는 것이 정상입니다.

자주 묻는 질문

Base64로 바꾸면 데이터가 안전해지나요?

아닙니다. Base64는 인코딩이지 암호화가 아니므로 도구 하나만 있으면 즉시 원본으로 되돌릴 수 있습니다. 데이터를 보호하려면 AES 같은 암호화를 사용해야 합니다.

결과 끝에 붙는 = 기호는 무엇인가요?

패딩입니다. Base64는 3바이트 단위로 처리하는데 원본 길이가 3의 배수가 아니면 부족한 자리를 = 로 채웁니다. 원본이 3의 배수면 = 가 붙지 않고, 나머지가 1이면 ==, 2면 = 이 하나 붙습니다.

URL-safe Base64는 언제 쓰나요?

일반 Base64의 + 와 / 는 URL 경로나 쿼리에서 다른 의미로 해석될 수 있습니다. URL이나 파일 이름에 값을 넣어야 할 때는 이를 - 와 _ 로 바꾼 URL-safe 방식을 사용합니다. JWT가 대표적인 예입니다.

Copied