Base64
텍스트와 Base64를 서로 변환합니다. URL 안전 변형도 지원합니다.
결과가 여기에 표시됩니다
Base64란 무엇이고 왜 존재하는가
Base64는 임의의 이진 데이터를 64가지 맨 인쇄 가능 문자만으로 나타내는 방법입니다: A–Z, a–z, 0–9, 그리고 기호 두 개입니다. 많은 시스템이 원시 바이트가 아니라 텍스트를 나르도록 만들어졌기에 존재합니다. 메일 본문, URL, JSON 문자열, HTML 속성, HTTP 헤더는 임의의 이진 내용으로 깨질 수 있지만 Base64 텍스트는 그대로 무사히 통과시킵니다. Base64로 인코딩하면 이진 데이터를 그런 텍스트 전용 경로에 안전하게 심을 수 있습니다.
대가는 크기입니다. Base64는 3바이트마다 4문자로 나타내므로 인코딩된 형태는 원본보다 약 33% 큽니다. 토큰, 작은 이미지, 키 같은 작은 페이로드에는 문제없으며, 큰 파일이 실제로 Base64로 인코딩되는 일이 드문 이유입니다.
이것은 인코딩이지 암호화가 아니다
Base64에 관해 이해해야 할 가장 중요한 점입니다: 아무런 보안도 제공하지 않습니다. 누구나 Base64를 즉시 디코딩할 수 있습니다 — 이 도구도 그렇습니다. 아무것도 숨기지 않고 아무것도 지키지 않습니다. 데이터를 비밀로 하려면 암호화하세요. Base64는 데이터를 전송에 안전하게 할 뿐, 비밀번호나 API 키를 인코딩해도 감추어지지 않습니다.
표준 Base64와 URL 안전 Base64
표준 Base64는 마지막 두 문자로 +와 /를 쓰고 끝을 = 기호로 채웁니다. 이 문자들은 URL과 파일 이름 안에서 특별한 뜻을 지니므로, URL 안전 변형은 +와 /를 -와 _로 바꾸고 대개 패딩을 뺍니다. 인코딩한 값이 웹 주소, 쿼리 매개변수, 쿠키, 파일 이름에 나타날 때 URL 안전 옵션을 쓰세요. 예를 들어 JSON Web Token은 바로 이 이유로 URL 안전 Base64를 씁니다.
UTF-8과 비ASCII 텍스트
브라우저 내장 btoa와 atob 함수는 Latin-1만 다루며 한국어, 아랍어, 중국어, 이모지 같은 문자에서 예외를 냅니다. 이 도구는 텍스트를 먼저 UTF-8로 인코딩하므로 어떤 문자도 올바르게 왕복합니다. 즉 안녕하세요나 😀도 깨지지 않고 인코딩·디코딩되어, 개발자가 맨 브라우저 함수에 손댈 때 흔히 생기는 "문자 깨짐"을 피합니다.
- 인코딩: 읽을 수 있는 텍스트를 입력하거나 붙여넣어 그 Base64 형태를 얻습니다.
- 디코딩: Base64(표준이든 URL 안전이든, 패딩이 있든 없든)를 붙여넣어 원래 텍스트를 되찾습니다.
자주 묻는 질문
- Base64는 안전한가요, 암호화된 건가요?
- 아니요. Base64는 되돌릴 수 있는 인코딩이지 암호화가 아닙니다. 누구나 즉시 디코딩할 수 있으므로 비밀번호, 키, 개인 정보를 지키는 데 절대 쓰지 마세요.
- 한국어, 아랍어, 이모지도 지원하나요?
- 네. 텍스트는 Base64 전에 UTF-8로 인코딩되므로 안녕하세요나 😀 같은 문자도 브라우저 내장 btoa 함수와 달리 깨지지 않고 인코딩·디코딩됩니다.
- URL 안전 Base64란 무엇인가요?
- +와 / 문자를 -와 _로 바꾸고 끝의 패딩을 빼, 결과를 URL, 쿼리 문자열, 쿠키, 파일 이름, JWT 같은 토큰 안에서 안전하게 쓸 수 있게 한 것입니다.
- 디코딩 결과가 비었거나 이상한 이유는 무엇인가요?
- 대개 입력이 유효한 Base64가 아니기 때문입니다 — 잘렸거나, 다른 문자 집합의 문자를 담았거나, 실은 맨 텍스트일 수 있습니다. 이 도구는 표준과 URL 안전 입력을 모두 받고 패딩 누락에도 너그럽지만, 텍스트로 표시하려면 바이트가 유효한 UTF-8이어야 합니다.
- 인코딩된 문자열이 원본보다 긴 이유는 무엇인가요?
- Base64는 3바이트마다 4문자로 인코딩하므로 출력이 입력보다 약 3분의 1 큽니다. 이 오버헤드는 형식에 내재된 것입니다.
- 패딩 문자(=)가 필요한가요?
- 패딩은 길이를 4의 배수로 만들며 엄격한 디코더에서는 필수지만, 이 도구는 있든 없든 입력을 받습니다. URL 안전 Base64는 대개 패딩을 뺍니다.
- 제 입력이 서버로 전송되나요?
- 아니요. 인코딩과 디코딩이 전적으로 브라우저 안에서 돌며, 붙여넣은 내용이 기기 밖으로 나가지 않습니다.