Base64 디코더
Base64로 인코딩된 문자열을 원래의 일반 텍스트 또는 바이너리 표현으로 디코딩합니다. 표준 RFC 4648 및 URL 안전 Base64 알파벳을 모두 지원하며, JWT 토큰도 포함됩니다.
Base64 문자열은 설계상 불투명합니다 - SGVsbG8sIFdvcmxkIQ==는 Hello, World!로 디코딩될 때까지 의미가 없습니다. RFC 4648에 정의된 Base64는 3개의 입력 바이트를 4개의 출력 문자로 인코딩하며, 대략 33%의 오버헤드를 추가합니다. 이 디코더는 브라우저의 네이티브 atob() 및 TextDecoder API를 사용하여 이를 반대로 수행합니다. 표준 Base64와 JWT 및 OAuth 토큰에서 사용되는 URL 안전 변형(- 및 _ 대신 + 및 /)을 모두 지원합니다. 어떤 것도 서버에 업로드되지 않습니다.
Base64 디코딩 방법
- Base64로 인코딩된 문자열을 입력 필드에 붙여넣습니다.
- 데이터가 원래 인코딩된 방식에 맞게 표준 또는 URL 안전 모드를 선택합니다.
- 디코딩된 일반 텍스트가 즉시 출력 패널에 나타납니다.
- 복사를 클릭하여 결과를 복사합니다.
Base64 디코딩 작동 원리
디코딩 과정
디코딩은 인코딩을 정확히 반대로 수행합니다. 각 Base64 문자는 알파벳 테이블을 사용하여 6비트 값으로 다시 매핑됩니다. 네 개의 연속된 문자(24비트)는 세 바이트를 재구성합니다. 브라우저의 atob() 함수는 표준 Base64를 네이티브로 처리합니다. URL 안전 Base64의 경우, - 및 _는 디코딩 전에 + 및 /로 변환됩니다. 그 결과 UTF-8 바이트 시퀀스는 TextDecoder를 사용하여 유니코드 문자열로 디코딩됩니다.
누락된 패딩 처리
표준 Base64는 문자열 길이를 4의 배수로 만들기 위해 = 패딩이 필요합니다. JWT 및 OAuth 토큰은 크기를 줄이기 위해 패딩을 제거합니다. 이 디코더는 문자열 길이에 따라 필요한 패딩을 자동으로 계산하고 추가합니다. 문자열 길이가 4로 나눈 나머지가 2이면 하나의 =가 필요하고, 3이면 두 개의 = 문자가 필요합니다.
예시
입력 (표준 Base64)
SGVsbG8sIFdvcmxkIQ==
출력
Hello, World!
일반적인 사용 사례
- JWT 토큰 검사 - 라이브러리 없이 클레임을 읽기 위해 헤더와 페이로드 섹션을 디코딩합니다.
- HTTP 기본 인증 -
Authorization: Basic dXNlcjpwYXNz헤더를 디코딩하여 내장된 자격 증명을 확인합니다. - 데이터 URI 검사 -
data:image/png;base64,...URI의 Base64 부분을 디코딩합니다. - API 응답 디버깅 - 일부 API는 JSON 응답에서 바이너리 콘텐츠를 Base64로 인코딩합니다.
모범 사례
- 올바른 모드(표준 vs URL 안전)를 선택하세요 - 잘못된 모드를 사용하면 출력이 엉망이 됩니다.
- JWT 토큰의 경우, 헤더(첫 번째 부분)와 페이로드(두 번째 부분)만 디코딩하세요; 세 번째 부분은 암호화 서명이며 인코딩된 텍스트가 아닙니다.
- 출력이 읽을 수 없는 문자라면, 원본 데이터는 바이너리(이미지, PDF 등)이며 텍스트가 아닙니다.
- Base64 디코딩은 보안 검사가 아닙니다 - 누구나 이를 디코딩할 수 있습니다.
텍스트를 Base64로 다시 인코딩하려면 Base64 인코더를 사용하세요. URL 인코딩된 데이터의 경우 URL 디코더를 사용하세요. JWT를 완전히 검사하려면 URL 안전 모드를 선택하여 점으로 구분된 첫 두 부분을 별도로 디코딩하세요.
자주 묻는 질문
이 도구로 JWT 토큰을 어떻게 디코딩하나요?
JWT는 점으로 구분된 세 부분으로 구성됩니다: header.payload.signature. 헤더(첫 번째 부분) 또는 페이로드(두 번째 부분)를 복사하고 URL 안전 모드를 선택한 후 디코더에 붙여넣습니다. 출력은 알고리즘(헤더) 또는 클레임(페이로드)이 포함된 JSON 객체입니다. 서명을 디코딩하지 마세요 - 이는 암호화 해시이며 Base64로 인코딩된 JSON 문자열이 아닙니다.
디코딩된 출력에 이상한 문자가 표시되는 이유는 무엇인가요?
이는 세 가지 중 하나를 의미합니다: (1) 원본 데이터가 텍스트가 아닌 바이너리(이미지, PDF, zip)였다; (2) 잘못된 모드를 선택했다 - 표준과 URL 안전 모드 간에 전환해 보세요; (3) 원본 텍스트가 UTF-8 이외의 문자 집합을 사용하여 인코딩되었다. 먼저 모드를 전환해 보세요. 출력이 여전히 읽을 수 없다면, 원본 데이터는 아마도 바이너리일 것입니다.
디코딩이 작동하려면 패딩 문자(==)가 필요한가요?
표준 Base64는 문자열 길이를 4의 배수로 만들기 위해 패딩이 필요합니다. 이 디코더는 누락된 패딩을 자동으로 추가하며, 이는 후행 = 문자를 제거하는 JWT 및 OAuth 토큰에 중요합니다. 문자열을 있는 그대로 붙여넣으면 디코더가 패딩을 자동으로 처리합니다.
여기서 디코딩할 때 내 민감한 데이터는 안전한가요?
네. 디코딩은 브라우저에서 atob() 및 TextDecoder API를 사용하여 완전히 실행됩니다. 붙여넣은 토큰, 자격 증명 및 개인 데이터는 서버로 전송되지 않으며, 기록되거나 저장되지 않습니다. 디코딩하는 동안 브라우저의 네트워크 탭을 열면 아웃바운드 요청이 없음을 확인할 수 있습니다.
표준 Base64와 URL 안전 Base64의 차이점은 무엇인가요?
표준 Base64 (RFC 4648 §4)는 + 및 /를 사용합니다. URL 안전 Base64 (RFC 4648 §5)는 URL, 파일 이름 및 HTTP 헤더의 충돌을 피하기 위해 이를 - 및 로 대체합니다. JWT, OAuth 토큰 및 PKCE 코드 검증자는 모두 URL 안전 Base64를 사용합니다. 문자열에 - 또는 가 포함되어 있다면 URL 안전 모드를 선택하세요.