·4분 읽기

Base64 명령어 정리 — Linux Mac Windows에서 인코딩 디코딩 실전

터미널 명령어로 Base64 인코딩·디코딩하는 방법을 OS별로 정리. Linux base64, Mac base64, Windows certutil/PowerShell, 크로스플랫폼 OpenSSL까지 한 번에.

Base64 명령어 정리 — Linux Mac Windows에서 인코딩 디코딩 실전
🔤
Base64 인코더/디코더 바로 사용하기
텍스트를 Base64로 인코딩하거나 디코딩하세요

왜 명령어로 Base64 다뤄야 할까?

Base64는 바이너리 데이터를 텍스트로 안전하게 옮기는 인코딩 방식. 이메일 첨부, JWT 토큰, API 키, SSH 공개키 같은 곳에 흔히 쓰여요. GUI 도구(웹사이트·앱)도 좋지만 터미널 명령어가 빠를 때가 많아요. - **CI/CD 파이프라인**: GitHub Actions·Jenkins에서 시크릿 인코딩 - **서버 작업**: SSH 접속해서 파일 인코딩 - **자동화 스크립트**: bash·PowerShell에서 변수 처리 - **민감 데이터**: 외부 사이트로 안 보내고 로컬에서 처리 오늘은 Linux·Mac·Windows 각 OS의 기본 명령어 + 크로스플랫폼 OpenSSL까지 5가지 방식을 정리해 드릴게요.

Linux — base64 명령어 (기본 내장)

거의 모든 리눅스 배포판에 `base64` 명령어가 기본 설치되어 있어요(coreutils 패키지). 인코딩. ```bash # 문자열 인코딩 echo -n "Hello World" | base64 # → SGVsbG8gV29ybGQ= # 파일 인코딩 base64 image.png > image.b64 # 줄바꿈 없이(한 줄로) 인코딩 echo -n "long text..." | base64 -w 0 ``` 디코딩. ```bash # 문자열 디코딩 echo "SGVsbG8gV29ybGQ=" | base64 -d # → Hello World # 파일 디코딩 base64 -d image.b64 > image.png ``` 주의. `echo`는 기본으로 줄바꿈을 추가해요. `-n` 옵션 빼먹으면 결과가 달라집니다.

Mac — base64 명령어 (BSD 버전)

macOS는 BSD 기반 `base64`라서 옵션이 살짝 달라요. 인코딩. ```bash # 문자열 인코딩 (Linux와 동일) echo -n "Hello World" | base64 # 파일 인코딩 — Mac은 -i 옵션 필요 base64 -i image.png -o image.b64 # 또는 리다이렉션 base64 image.png > image.b64 ``` 디코딩. ```bash # Mac은 -D 대문자 (Linux는 -d 소문자) echo "SGVsbG8gV29ybGQ=" | base64 -D # 파일 디코딩 base64 -D -i image.b64 -o image.png ``` 주의. Mac의 `base64 -d` 일부 버전은 동작하는데 공식적으론 `-D` 대문자. 호환성 위해 대문자 권장.

Windows — certutil 명령어 (기본 내장)

Windows에는 `base64` 명령어 없지만 `certutil`이 대체. 인코딩. ```cmd :: 파일 인코딩 certutil -encode input.txt output.b64 ``` 결과 파일 시작에 `-----BEGIN CERTIFICATE-----`, 끝에 `-----END CERTIFICATE-----` 헤더가 추가돼요. 순수 Base64만 필요하면 헤더 제거 후 사용. 디코딩. ```cmd certutil -decode input.b64 output.txt ``` PowerShell에서 헤더 없이 처리. ```powershell # 인코딩 $bytes = [System.IO.File]::ReadAllBytes("input.png") [Convert]::ToBase64String($bytes) | Out-File output.b64 # 디코딩 $b64 = Get-Content input.b64 [System.IO.File]::WriteAllBytes("output.png", [Convert]::FromBase64String($b64)) ``` PowerShell .NET 방식이 헤더 추가 없이 깔끔.

OpenSSL — 크로스플랫폼 통일 (모든 OS)

Linux·Mac·Windows(Git Bash·WSL)에 OpenSSL 설치되어 있으면 같은 명령어가 동작. 인코딩. ```bash # 문자열 echo -n "Hello World" | openssl base64 # → SGVsbG8gV29ybGQ= # 한 줄로 (개행 없이) echo -n "Hello World" | openssl base64 -A # 파일 openssl base64 -in image.png -out image.b64 ``` 디코딩. ```bash # 문자열 echo "SGVsbG8gV29ybGQ=" | openssl base64 -d # 파일 openssl base64 -d -in image.b64 -out image.png ``` 주의. OpenSSL은 기본으로 64자마다 줄바꿈 삽입. JWT 같이 한 줄이 필요한 곳은 `-A` 플래그 필수.

URL-safe Base64 — JWT·API 토큰 처리

표준 Base64는 `+`, `/`, `=` 문자를 사용하는데 URL에서 특수 의미가 있어요. URL-safe Base64는 `+→-`, `/→_`, `=` 제거(또는 URL 인코딩). JWT·OAuth·일부 API에서는 URL-safe 사용 필수. Linux/Mac. ```bash # 인코딩 + URL-safe 변환 echo -n "data" | base64 | tr '+/' '-_' | tr -d '=' # 디코딩 — = 패딩 복원 후 INPUT="abc-_xyz" PADDED=$(printf '%s' "$INPUT" | tr '_-' '/+' ) LEN=$((${#PADDED} % 4)) if [ $LEN -ne 0 ]; then PADDED="$PADDED$(printf '%*s' $((4-LEN)) '' | tr ' ' '=')"; fi echo "$PADDED" | base64 -d ``` Python이 더 간단. ```python import base64 base64.urlsafe_b64encode(b"data").decode() base64.urlsafe_b64decode("abc-_xyz") ```

흔한 5가지 실수와 해결

1. **`echo`의 자동 개행**: `-n` 빼먹으면 `\n` 포함된 채 인코딩, 결과가 달라요. `echo -n` 또는 `printf` 사용 2. **줄바꿈 삽입(64자마다)**: 표준 base64 출력은 64자마다 개행. JWT처럼 한 줄 필요하면 Linux는 `-w 0`, OpenSSL은 `-A` 3. **`certutil` 헤더 잔존**: Windows certutil은 PEM 헤더 추가. PowerShell .NET이 더 깔끔 4. **인코딩 차이**: 시스템 기본 인코딩(UTF-8 vs CP949)에 따라 한글 결과 달라짐. UTF-8 명시 권장 5. **패딩 `=` 처리**: URL-safe에서 `=` 제거 후 디코딩하려면 길이 4의 배수로 복원 필요

Toolkio Base64 도구로 빠르게 처리

터미널 명령어가 익숙하지 않거나 빠르게 한두 번만 변환할 때는 [Toolkio Base64 인코더/디코더](https://toolkio.com/tools/base64)가 편해요. 장점. 1. **OS 상관없이 동일하게 동작** — 브라우저만 있으면 됨 2. **표준·URL-safe 둘 다 지원** 3. **이미지 → Base64 미리보기** — Data URL로 바로 활용 가능 4. **개행 옵션** — 64자마다 vs 한 줄 5. **서버 전송 없음** — 시크릿·API 키도 안전 명령어는 자동화·반복 작업, Toolkio는 일회성·테스트에 — 용도별로 나눠 쓰면 좋아요. 더 자세한 Base64 활용은 [Base64 5가지 활용](/blog/base64-5-uses-email-image-api-auth-webhook)에서, 디코딩 트러블슈팅은 [Base64 디코딩 문제 해결](/blog/base64-decode-troubleshooting-guide)에서 이어 보세요.

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

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

Base64 인코더/디코더