사용 방법
- 인코딩할 텍스트나 디코딩할 Base64 문자열을 입력창에 입력하거나 붙여 넣습니다.
- 인코딩 또는 디코딩을 누릅니다. 결과를 URL이나 JWT 같은 토큰에 넣을 경우 URL-safe 출력을 체크하세요.
- 결과를 복사합니다. 디코딩에 실패하면 입력이 Base64가 아닌지, UTF-8 텍스트가 아닌지 알려 줍니다.
예시
Hello
→ SGVsbG8=인코딩 결과입니다. 끝의 =는 패딩입니다.
안녕
→ 7JWI64WV인코딩 결과입니다. 한글 한 글자는 UTF-8에서 3바이트이므로 6바이트가 Base64 8글자가 됩니다.
SGVsbG8
→ Hello디코딩 결과입니다. 패딩이 빠져 있어도 받아들입니다.
계산 방식
텍스트는 먼저 UTF-8로 바이트가 되고, 3바이트마다 A-Z, a-z, 0-9, +, /로 이루어진 4글자로 적힙니다. 마지막 묶음이 모자라면 = 문자로 채웁니다.
먼저 UTF-8을 거치기 때문에 영어가 아닌 텍스트도 올바르게 처리됩니다. 브라우저의 기본 btoa 함수는 1바이트 문자만 다룰 수 있어서 한글 같은 텍스트는 이 과정 없이는 실패합니다.
디코딩은 그 반대입니다. 입력의 공백은 무시하고, URL-safe 문자는 +와 /로 되돌리고, 빠진 패딩은 채운 뒤, 나온 바이트가 올바른 UTF-8 텍스트여야 합니다.
출처
자주 묻는 질문
- Base64는 암호화인가요?
- 아니요. Base64는 바이트를 텍스트로 적는 방식일 뿐입니다. 누구나 디코딩할 수 있으므로 비밀을 보호하는 용도로 쓰면 안 됩니다.
- Base64 텍스트가 원본보다 긴 이유는 무엇인가요?
- Base64는 3바이트를 4글자로 바꾸기 때문에 결과가 입력보다 약 3분의 1 깁니다.
- URL-safe Base64는 무엇인가요?
- +를 -로, /를 _로 바꾸고 보통 끝의 = 패딩도 생략해서, 이스케이프 없이 URL과 파일 이름에 쓸 수 있게 한 형식입니다. 디코더는 두 형식을 모두 받아들입니다.
- 디코딩하면 UTF-8이 아니라고 나오는 이유는 무엇인가요?
- 입력은 올바른 Base64지만 그 안의 바이트가 텍스트가 아닌 경우입니다. 예를 들어 이미지나 압축 파일이 그렇습니다. 이 도구는 텍스트로만 디코딩합니다.
- 입력한 텍스트가 업로드되나요?
- 아니요. 인코딩과 디코딩은 브라우저 안에서만 실행되며 텍스트는 서버로 전송되지 않습니다.