Base64 변환기 - 인코딩·디코딩·JWT 무료 웹 도구

Base64 인코딩 · 디코딩

텍스트·파일을 Base64로 바꾸거나, Base64 문자열을 원래 내용으로 되돌립니다. 입력하는 대로 결과가 바로 바뀌어요.

입력한 내용은 서버로 전송되지 않고 이 브라우저 안에서만 처리됩니다. 토큰이나 비밀번호를 넣어도 저장·전송되지 않아요.
고급 옵션 보통은 건드리지 않아도 돼요

※ Base64는 암호화가 아니라 인코딩입니다. 열쇠 없이 누구나 원래 내용으로 되돌릴 수 있으니, 비밀번호를 Base64로 바꿨다고 안전해지지 않아요.

※ 출처를 모르는 문자열을 디코딩해서 나온 링크나 파일은 함부로 열지 마세요. 피싱 주소나 악성 코드를 Base64로 숨기는 경우가 있습니다.

이미지 변환기나 QR 생성기를 만들다 보면 data:image/png;base64,iVBOR…처럼 끝없이 이어지는 문자열을 자주 보게 됩니다. 처음엔 저도 무슨 암호인 줄 알았어요. 그때마다 북마크해 둔 base64decode.org에 붙여 넣어 풀어 보곤 했는데, 알고 보니 암호가 아니라 그냥 '바꿔 적은 글자'였습니다. 원리가 생각보다 단순해서, 이번에는 직접 변환 도구를 만들어 봤어요.

입력한 내용은 서버로 가지 않고 방문하신 분의 브라우저 안에서만 변환됩니다. 새로고침하면 입력한 내용도 사라져요. 로그인 토큰처럼 남에게 보이기 싫은 값을 넣는 경우가 많아서 처음부터 이렇게 만들었습니다.

사용하는 방법

  1. 인코딩 : 글자를 Base64로 바꿉니다. 한글, 이모지도 됩니다.
  2. 디코딩 : Base64를 원래 내용으로 되돌립니다. 이미지 문자열이나 로그인 토큰을 넣어도 알아서 구분해요.
  3. 파일 → Base64 : 이미지 같은 파일을 끌어다 놓으면 Base64나 HTML 코드로 바꿔 줍니다.

입력하는 대로 결과가 바로 바뀌어서 변환 버튼은 따로 없습니다. 처음이라면 입력칸 아래 '예시 넣기'를 하나씩 눌러 보세요. 아래 설명을 읽는 것보다 그게 더 빠를 거예요.

솔직히 대부분은 인코딩, 디코딩 두 탭이면 충분합니다. 파일 탭은 작은 아이콘이나 로고를 이미지 파일 없이 HTML 코드 안에 바로 넣고 싶을 때, 또는 이메일 서명에 로고를 붙일 때 쓸모가 있어요. 그리고 인코딩할 때 보이는 '고급 옵션'은 결과를 웹 주소에 넣거나 메일 데이터를 직접 만드는 경우에만 필요해서 기본으로 접어 뒀습니다. 펼쳐 보면 옵션마다 언제 쓰는지 한 줄씩 적어 놨어요.

암호처럼 보이지만 암호가 아니에요

Base64는 사진이든 한글이든 어떤 데이터를 영문 대소문자, 숫자, +, / 이렇게 64가지 글자로만 다시 적는 방법입니다. 이메일처럼 원래 영어 글자만 다니던 통로로 사진 같은 걸 보내려고 만든 거예요. 예를 들어 한글 '가'를 Base64로 바꾸면 6rCA가 됩니다.

중요한 건 정해진 표대로 바꿔 적었을 뿐이라 비밀번호(열쇠) 없이 누구나 되돌릴 수 있다는 점이에요. bXlpZDpteXBhc3N3b3Jk를 위 도구 디코딩 탭에 넣어 보면 바로 myid:mypassword가 나옵니다. 그러니 비밀번호를 Base64로 바꿔 놓고 숨겼다고 생각하면 안 돼요. 그리고 글자 수는 원본보다 약 33% 늘어납니다. 끝에 붙는 =는 길이를 맞추려고 채워 넣은 표시예요.

자주 보이는 Base64 세 가지

1. 글자: 이메일 제목, 깨진 한글

메일 원문을 열어 보면 한글 제목이 =?UTF-8?B?7KO866y4…?=처럼 적혀 있는데, 가운데가 Base64예요. 오래된 메일은 한글을 옛날 방식(EUC-KR)으로 저장한 경우가 많아서, 그냥 풀면 �ȳ��ϼ���처럼 깨집니다. 도구는 이럴 때 EUC-KR로 다시 읽어서 한글을 살려 줘요.

2. 이미지: data:image/png;base64,…

처음에 말한 그 긴 문자열이 이겁니다. Data URI라고 부르고, 이미지 파일을 따로 올리지 않고 웹페이지 코드 안에 글자로 통째로 넣는 방식이에요. 앞부분만 읽으면 뭔지 알 수 있습니다.

  • data: 여기부터 데이터라는 표시
  • image/png PNG 이미지 파일이라는 뜻
  • ;base64, 뒤에 오는 내용을 Base64로 적었다는 뜻
  • iVBORw0KGgo… 이미지 파일 내용 그 자체

PNG 이미지는 거의 다 iVBOR로 시작합니다. 모든 PNG 파일 맨 앞에 붙는 같은 표시를 Base64로 바꾸면 항상 이렇게 나오거든요. 도구 디코딩 탭의 '이미지' 예시를 누르면 작은 빨간 점이 나오는 걸 볼 수 있어요.

3. 로그인 토큰: JWT

JWT(JSON Web Token)는 웹사이트에 로그인하면 받는 출입증 같은 겁니다. 서버가 "이 사람은 홍길동이고 1시간 동안 유효함" 같은 내용을 적어서 주면, 브라우저가 이후에 그걸 내밀어 로그인한 사람이라는 걸 증명해요. 생김새는 eyJhbGci….eyJzdWIi….c2lnbmF0…처럼 점(.)으로 나뉜 세 덩어리입니다.

앞의 두 덩어리는 그냥 Base64라서 누구나 풀어 볼 수 있어요. 도구에 넣으면 이름, 권한, 만료 시각이 그대로 보이고, 만료 시각은 한국 시간으로 바꿔서 아직 유효한지도 알려 줍니다. 세 번째 덩어리는 서버만 아는 열쇠로 찍은 도장이라, 내용을 고치면 도장이 안 맞아서 서버가 받아 주지 않아요. 이 도장이 진짜인지는 이 도구로 확인할 수 없습니다.

base64decode.org와 다른 점

오래 써 온 base64decode.org는 HAZOTA Europe Kft.라는 헝가리 회사가 운영하는 무료 사이트입니다. 한국어 화면이 있고, 문자셋을 60개 가까이 고를 수 있으며, 파일도 100MB까지 변환해 줘요. 다만 사이트 설명에 따르면 브라우저 안에서 바로 바뀌는 실시간 모드는 UTF-8만 되고, 그 밖의 변환과 파일 변환은 서버로 보내서 처리합니다(처리 후 삭제한다고 밝히고 있어요).

그래서 저는 큰 파일이나 흔치 않은 외국어 문자셋은 base64decode.org로, 로그인 토큰이나 깨진 한글, 이미지 문자열처럼 바로 확인하고 싶은 건 위 도구로 봅니다. 대신 제 도구는 파일은 10MB까지, 문자셋은 UTF-8과 EUC-KR만 지원해요.

만들면서 막혔던 부분

브라우저에는 Base64로 바꿔 주는 btoa라는 기본 기능이 있어서 금방 끝날 줄 알았어요. 그런데 한글을 넣자마자 에러가 났습니다. 오래된 기능이라 영어 같은 1바이트 글자만 받거든요. 그래서 한글을 먼저 컴퓨터가 저장하는 숫자(UTF-8 바이트)로 바꾼 다음 넘기도록 고쳤습니다. 인터넷에서 찾은 간단한 변환 코드로 한글이 이상하게 나온다면 대부분 이 단계가 빠진 경우예요.

'새 창으로 열기'도 생각할 게 있었습니다. 디코딩한 내용이 웹페이지 코드라면 새 창에서 열리는 순간 그 안의 스크립트가 실행될 수 있거든요. 그래서 이미지나 PDF처럼 스크립트가 없는 형식만 원래 모양으로 열고, 나머지는 전부 글자 그대로 보이게 했습니다.

자주 묻는 질문

무료인가요?

무료이고 횟수 제한도 없습니다. 변환이 방문하신 분의 기기에서 일어나서 따로 비용이 드는 구조가 아니에요.

'쓸 수 없는 글자'가 있다고 나와요

복사할 때 따옴표나 다른 글자가 같이 딸려 온 경우가 대부분이에요. 빨간색으로 표시된 글자만 지우면 됩니다. 공백이나 줄바꿈, 끝의 =가 빠진 정도는 도구가 알아서 정리해요.

디코딩했는데 이상한 글자만 나와요

문자셋을 EUC-KR이나 UTF-8로 바꿔 보세요. 그래도 안 되면 글자가 아니라 파일일 가능성이 커서, 다운로드로 받아 열어 보시면 됩니다. 출처를 모르는 문자열에서 나온 링크나 파일은 함부로 열지 마시고요.

댓글 쓰기

0 댓글

이 블로그 검색

태그

신고하기

withai.09note.com main image