SomeeLab.tools

Base64 인코더·디코더

텍스트를 Base64로 바꾸고 다시 되돌립니다. 토큰과 쿼리스트링에 쓰는 URL-safe 출력도 지원합니다. 가입 없이 브라우저에서 바로 돌아갑니다.

+와 /를 -와 _로 바꾸고 = 패딩을 뗍니다. 주소나 JWT에 그대로 넣어도 깨지지 않습니다.

Base64는 암호가 아닙니다

Base64는 아무 바이트나 영문자·숫자·기호 몇 개로만 표현하는 방법입니다. 메일 본문이나 JSON처럼 텍스트만 다니는 통로에 이미지나 이진 데이터를 실어 보내려고 만들어졌습니다.

키도 없고 비밀도 없으므로 되돌리는 데 아무것도 필요하지 않습니다. 비밀번호를 Base64로 바꿔 설정 파일에 넣는 것은 감춘 것이 아니라 한 단계 귀찮게 만든 것뿐입니다. 실제로 감춰야 한다면 암호화하거나 비밀 관리 도구에 맡기세요.

URL-safe는 언제 쓰나

표준 Base64는 +/를 씁니다. 둘 다 주소에서 다른 뜻을 가진 문자라, 쿼리스트링에 그대로 넣으면 값이 깨집니다. 끝에 붙는 = 패딩도 마찬가지입니다.

URL-safe는 이 세 가지를 정리한 변형입니다. +-로, /_로 바꾸고 패딩을 뗍니다. JWT의 세 조각이 바로 이 형식이고, OAuth 인가 코드나 파일 이름에 넣는 값도 대개 이쪽입니다. 주소에 들어갈 값이라면 URL-safe를, 그 밖에는 표준을 쓰면 됩니다.

길이가 늘어납니다

Base64는 3바이트를 4글자로 바꾸므로 결과가 원본보다 약 33% 깁니다. 여기에 UTF-8 인코딩이 먼저 걸린다는 점을 더해야 합니다. 한글은 한 글자가 3바이트라, 열 글자짜리 한국어 문장이 30바이트가 되고 Base64로는 40글자가 됩니다.

이미지를 data: URL로 HTML에 박아 넣을 때 이 증가폭이 문제가 됩니다. 작은 아이콘 정도면 요청 한 번을 아끼는 이득이 크지만, 사진을 통째로 넣으면 파일이 커진 만큼 첫 화면이 늦어집니다.

디코딩이 안 될 때

Base64가 아닙니다가 뜨면 대개 문자열이 잘렸거나 앞뒤에 따옴표·줄바꿈이 딸려 온 경우입니다. 이 도구는 줄바꿈과 공백을 알아서 걷어내고 URL-safe 문자도 함께 받으므로, 그래도 실패한다면 문자열 자체가 온전하지 않은 것입니다.

텍스트가 아니라 바이너리로 풀립니다는 디코딩은 됐지만 결과가 사람이 읽는 글자가 아니라는 뜻입니다. 이미지나 압축 파일을 Base64로 만든 값이라면 정상적인 반응입니다.