·2분 읽기

Base64 디코딩 실전 트러블슈팅 — 깨진 문자열 복구 6가지 패턴

Base64 디코딩이 안 될 때 원인은 대부분 정해져 있어요. 패딩 누락, URL-safe 변형, 이중 인코딩까지 실전에서 자주 만나는 6가지 해결 패턴을 정리했어요.

Base64 디코딩 실전 트러블슈팅 — 깨진 문자열 복구 6가지 패턴
🔤
Base64 인코더/디코더 바로 사용하기
텍스트를 Base64로 인코딩하거나 디코딩하세요

Base64 디코딩이 실패하는 6가지 이유

디코딩을 돌렸는데 'Invalid character' 에러가 뜨면 당황스러워요. 실전에서 만나는 실패 원인은 대부분 이 6가지 중 하나예요. 1. 패딩 `=` 누락 2. URL-safe 변형(`-`, `_`)을 표준으로 디코드 시도 3. 줄바꿈(`\n`) 또는 공백 포함 4. 이중 인코딩 (Base64 안에 Base64) 5. 잘린 문자열 (마지막 일부 누락) 6. 알파벳이 아닌 문자 포함 (한글, 이모지) 각 패턴의 증상과 복구법을 차례로 정리할게요.

1. 패딩 보정

Base64 길이는 4의 배수여야 해요. 누군가 `=`를 제거해서 보내는 경우가 흔합니다. 길이를 보고 부족한 만큼 `=`를 채우세요. - 길이 % 4 == 0 → 완전 - 길이 % 4 == 2 → `==` 추가 - 길이 % 4 == 3 → `=` 추가 - 길이 % 4 == 1 → 깨진 데이터 (복구 불가) Python: `data += '=' * (-len(data) % 4)`

2. URL-safe 변형 대응

JWT 토큰이나 OAuth 파라미터는 URL-safe Base64를 써요. 여기서는 `+` 대신 `-`, `/` 대신 `_`로 바뀝니다. 표준 디코더는 `-`, `_`를 모르니 먼저 치환해 주세요. ``` data = data.replace('-', '+').replace('_', '/') ``` 그리고 패딩까지 보정하면 대부분 열립니다.

3. 줄바꿈과 공백 제거

이메일 MIME이나 PEM 인증서는 64자마다 줄바꿈이 들어가요. 이걸 지우지 않고 디코드하면 에러가 납니다. `data = ''.join(data.split())` 한 줄로 해결돼요. 공백·탭·줄바꿈 모두 제거됩니다.

4. 이중 인코딩 풀기

드물게 Base64 결과를 다시 Base64로 감싸는 경우가 있어요. 한 번 디코드했는데 결과가 또 Base64처럼 생겼다면 한 번 더 돌려 보세요. 실제로 AWS Lambda 이벤트에서 본 사례예요. API Gateway + 바이너리 페이로드 조합에서 자주 생깁니다.

5. 잘린 문자열 복구

길이가 뒤에서 잘렸으면 마지막 블록을 복구해야 해요. 마지막 1~3자가 날아간 정도면 패딩 조정으로 대부분 열려요. 4자 이상 잘리면 원본 일부가 유실된 거라 복구는 안 됩니다.

6. 비ASCII 문자 확인

복사·붙여넣기 과정에서 한글이나 이모지가 섞이면 디코더가 에러를 던져요. 정규식 `^[A-Za-z0-9+/=_-]*$`로 필터링한 뒤 디코드하세요. 필터 통과가 안 되는 경우, 원본 전송 과정에서 인코딩이 깨진 거라 송신 측에 재요청이 답입니다.

Toolkio Base64 도구 활용

Toolkio Base64 변환기는 URL-safe 자동 감지, 패딩 자동 보정, 줄바꿈 자동 제거가 내장돼 있어요. 브라우저에서 실행되니 민감한 데이터도 서버로 전송되지 않습니다.

지금 바로 Base64 인코더/디코더를 사용해보세요

무료이며, 브라우저에서 바로 실행됩니다.

Base64 인코더/디코더