이 도구에 대하여
이 무료 Base64 인코더 / 디코더는 텍스트를 Base64로, 그리고 다시 원래대로 변환합니다. UTF-8을 안전하게 처리하므로 이모지, 악센트가 붙은 글자, 한국어, 중국어, 일본어, 아랍어, 키릴 문자가 왕복해도 그대로 남습니다 — 놀랄 만큼 많은 Base64 도구가 그렇지 못합니다.
모든 처리는 브라우저 안에서 이루어집니다. 붙여넣은 내용은 업로드되지도, 기록되지도, 누구에게 보이지도 않습니다. 여기서는 그것이 다른 도구보다 더 중요합니다. 사람들은 API 키와 토큰, 설정 조각을 하루 종일 Base64 변환기에 붙여넣기 때문입니다.
Base64가 실제로 무엇인가
Base64는 암호화가 아닙니다. 압축도 아닙니다. *어떤* 데이터든 거의 어디로나 안전하게 보낼 수 있는 64개의 문자만으로 다시 쓰는 방법입니다. A–Z, a–z, 0–9, +, / 를 쓰고, 끝에 = 를 채움 문자로 사용합니다.
존재 이유는 역사적이면서 지금도 유효합니다. 많은 시스템이 임의의 바이트가 아니라 텍스트를 나르도록 만들어졌습니다 — 이메일 본문, JSON 문자열, XML 속성, HTTP 헤더, URL, 환경 변수. 그런 시스템에 0x00 이나 0x1B 같은 날 바이트를 건네면, 경로 어딘가에서 그것을 망가뜨리거나 제거하거나 메시지 자체를 거부합니다. Base64는 그런 바이트를 아무도 문제 삼지 않는 평범한 문자와 숫자로 바꾸어 이 문제를 통째로 피해 갑니다.
원리는 간단합니다. Base64는 데이터를 3바이트씩(24비트) 가져다 4개의 문자(각 6비트)로 다시 씁니다. 이 비율 때문에 Base64 출력은 항상 입력보다 약 33% 큽니다. 데이터가 3으로 딱 나누어떨어지지 않으면 마지막 묶음이 = 하나나 둘로 채워집니다.
Base64는 비밀이 아닙니다
이 점은 분명히 말할 가치가 있습니다. 실제 보안 사고를 일으키기 때문입니다.
누구나 Base64를 디코딩할 수 있습니다. 키도, 비밀번호도, 비밀도 없습니다. 바로 이 페이지가 순식간에 디코딩하며, 모든 개발자와 모든 로그 분석 도구, 그리고 그것을 발견한 공격자도 마찬가지입니다. cGFzc3dvcmQxMjM= 는 숨겨진 비밀번호가 아니라 password123 이라는 단어가 아주 얇은 변장을 하고 있는 것뿐입니다.
그러므로 Base64는 운반에는 적합합니다. 그러나 무언가를 보호하는 수단이었던 적은 없습니다. 읽히지 않아야 할 것이 있다면 진짜 암호화가 필요합니다. 값이 *뒤섞여 보이는* 것과 *보호되는* 것은 같지 않습니다.
이는 반대 방향으로도 유용합니다. 로그 파일이나 설정, URL에서 = 로 끝나는 긴 영숫자 나열을 발견했다면 그것은 거의 틀림없이 Base64이며, 그냥 읽어볼 수 있습니다.
어디서 만나게 되는가
- 데이터 URL — data:image/png;base64,iVBORw0KGgo… 는 이미지를 HTML이나 CSS에 직접 넣어 별도 파일을 없앱니다
- HTTP Basic 인증 — Authorization 헤더는 말 그대로 사용자:비밀번호 의 Base64이며, HTTPS 없는 Basic 인증이 위험한 이유가 바로 이것입니다
- JSON Web Token — JWT는 점으로 이어진 세 개의 Base64url 블록이고, 앞의 둘은 그대로 읽히는 JSON입니다
- 이메일 첨부 파일 — MIME은 수십 년 동안 텍스트만 지나가는 메일 시스템을 통해 바이너리 파일을 Base64로 날라 왔습니다
- 설정 파일과 시크릿 — 쿠버네티스 시크릿, .env 파일, CI 변수는 값을 Base64로 저장하는 경우가 많은데, 이 역시 안전이 아니라 운반을 위한 것입니다
- API — JSON 문자열 안에 바이너리 데이터를 실어야 하는 모든 필드
UTF-8, 그리고 일부 도구가 틀리는 이유
Base64가 인코딩하는 것은 바이트이지 글자가 아닙니다. 그래서 무언가를 인코딩하기 전에 텍스트를 바이트로 바꿔야 하고 — 바로 그 지점에서 도구들이 조용히 망가집니다.
전형적인 오류는 순수 ASCII 밖의 문자를 포함한 텍스트에 한 글자당 한 바이트 변환을 쓰는 것입니다. 그렇게 작성된 도구에 café 나 한국어 나 이모지를 붙여넣으면 오류가 나거나, 더 나쁘게는 조용히 손상된 출력이 나와 디코딩하면 깨진 글자로 돌아옵니다.
이 도구는 먼저 텍스트를 웹이 실제로 쓰는 인코딩인 UTF-8 로 변환합니다. é, →, 🎉, 한국어 모두 입력한 그대로 인코딩되고 그대로 되돌아옵니다.
표준 Base64와 Base64url
두 가지 방식이 있으며, 이를 혼동하는 것이 "유효한 Base64가 아닙니다" 오류의 흔한 원인입니다.
표준 Base64는 마지막 두 문자로 + 와 / 를 씁니다. 이 도구가 만들어 내는 것이 이것이고, 거의 모든 시스템이 기대하는 것도 이것입니다.
Base64url은 그것을 - 와 _ 로 바꾸고 = 채움도 대개 생략합니다. + 와 / 는 URL과 파일 경로 안에서 고유한 의미를 갖기 때문에 그대로 두면 이스케이프가 필요하기 때문입니다. JWT가 Base64url을 쓰고, 경로나 쿼리 문자열에 인코딩된 값을 넣는 많은 API도 마찬가지입니다.
- 와 _ 가 가득한 문자열에서 디코딩이 실패한다면 이유가 이것입니다. 다시 + 와 / 로 바꾸면 대개 해결됩니다.
사용 방법
- 텍스트(또는 Base64)를 입력란에 붙여넣습니다
- 버튼으로 인코딩 또는 디코딩 합니다
- 바꾸기로 결과를 입력란에 보내 반대 방향으로 진행합니다
- 결과를 복사합니다
알아두면 좋은 점
- Base64 출력은 입력보다 약 33% 큽니다. 3 MB 이미지는 데이터 URL로 약 4 MB가 됩니다. 큰 파일을 넣기 전에 기억해 둘 만합니다.
- 공백은 대개 무해합니다. 많은 시스템이 Base64를 한 줄 76자로 접지만, 디코더는 보통 그 줄바꿈을 무시합니다.
- = 는 끝에만 나타나고 중간에는 나타나지 않습니다. 하나나 둘이며 셋이 되는 일은 없습니다.
- 채움을 포함한 길이는 언제나 4의 배수입니다. 그렇지 않다면 어딘가에서 잘린 것입니다.
- 임의의 바이너리를 텍스트로 디코딩하면 의미 없는 글자로 보입니다. PNG를 Base64 디코딩하면 나오는 것은 바이트이지 단어가 아닙니다 — 정상이며 실패가 아닙니다.
자주 묻는 질문
Base64는 암호화인가요?
아니요. 그리고 이것이 가장 중요한 점입니다. Base64에는 키도 비밀도 없습니다. 그 문자열을 본 사람은 누구나 한 단계로 디코딩할 수 있으며 이 페이지도 마찬가지입니다. 안전한 운반을 위한 인코딩이지 보호 수단이 아닙니다. 비밀번호나 토큰, 그 밖에 중요한 것을 감추는 데 절대 쓰지 마십시오.
Base64 끝에 등호가 하나나 둘 붙는 이유는 무엇인가요?
채움입니다. Base64는 3바이트 묶음을 4개의 문자로 바꿉니다. 데이터가 3으로 딱 나누어떨어지지 않으면 마지막 묶음이 모자라고, 전체 길이를 4의 배수로 유지하려고 = 로 채웁니다. 1바이트가 남으면 ==, 2바이트가 남으면 =, 딱 떨어지면 채움이 붙지 않습니다.
Base64 문자열이 원본보다 긴 이유는 무엇인가요?
3바이트마다 4개의 문자가 되므로 출력은 언제나 입력보다 약 33% 크고, 여기에 최대 두 개의 채움 문자가 더해집니다. 피할 수 없는 일이며, 임의의 데이터를 텍스트 필드에 안전하게 담기 위한 대가입니다. 크기가 중요하다면 인코딩한 뒤가 아니라 인코딩하기 전에 데이터를 압축하십시오.
이미지나 PDF를 Base64로 인코딩할 수 있나요?
네, 흔한 용도입니다. 데이터 URL이 HTML과 CSS에 이미지를 넣는 방식이 바로 이것입니다. 다만 이 도구는 붙여넣은 텍스트를 다루므로 토큰, JSON, 설정값, 이미 있는 Base64 문자열에 적합합니다. 큰 것을 넣기 전에 33% 증가를 기억하십시오.
"유효한 Base64가 아닙니다"라며 디코딩이 실패하는 이유는 무엇인가요?
흔한 원인은 문자열이 잘렸거나, 엉뚱한 문자가 함께 붙여넣어졌거나, Base64url이기 때문입니다. Base64url은 표준 Base64의 + 와 / 자리에 - 와 _ 를 쓰고 채움도 제거된 경우가 많아, JWT 블록을 그대로 붙여넣으면 디코딩되지 않을 수 있습니다. - 를 + 로, _ 를 / 로 바꾸어 다시 시도하십시오.
입력한 텍스트가 서버로 전송되나요?
아니요. 변환 전체가 브라우저에 내장된 기능으로 이루어집니다. 아무것도 업로드되지 않고 저장되지 않으므로 연결을 꺼도 계속 작동합니다. 사람들이 얼마나 자주 인증 정보를 Base64 도구에 붙여넣는지 생각하면, 바로 그것이 핵심입니다.
관련 도구
- URL 인코더 / 디코더 — URL과 쿼리 문자열에서 끊임없이 마주치는 또 다른 인코딩
- JWT 디코더 — 토큰의 Base64url 블록을 손으로 바꾸지 않고 읽어 줍니다
- 해시 생성기 — MD5, SHA-1, SHA-256. Base64와 달리 한 방향입니다
- 이미지를 Base64로 — 실제 이미지 파일을 데이터 URL로 변환