Base64 인코딩/디코딩 치트시트: Windows, Linux, Mac 명령어 예시
Windows, Linux 및 Mac 에서 파일을 Base64 로 인코딩하고 디코딩합니다.
이 치트시트는 Windows, Linux, macOS 에서 추가 도구를 사용하지 않고 명령줄을 통해 파일과 문자열을 Base64 로 인코딩하고 디코딩하는 방법 을 보여줍니다.

이 가이드는 개발자 도구: 현대 개발 워크플로우 완전 가이드 의 일부입니다.
Base64 는 64 개의 문자 (A–Z, a–z, 0–9, +, /) 를 사용하여 이진 데이터를 ASCII 텍스트로 변환합니다. 이는 HTTP Basic Auth 의 자격 증명 인코딩, JWT 페이로드 (참고: JWT 토큰 디코딩 및 출력), Kubernetes 시크릿, HTML/CSS 의 데이터 URI, JSON 또는 환경 변수에 이진 데이터 임베딩 등에 널리 사용됩니다. 명령줄을 사용하면 민감한 데이터를 로컬에 유지할 수 있으며 CI/CD 파이프라인에서 스크립팅이 가능합니다.
Windows 에서 Base64 인코딩 및 디코딩
Windows 에는 전용 base64 명령이 기본적으로 제공되지 않지만, 내장 도구를 사용할 수 있습니다.
Certutil 을 사용한 명령 프롬프트 사용
-
명령 프롬프트를 엽니다.
-
파일을 Base64 로 인코딩:
certutil -encode input.bin output.b64input.bin을 파일 경로로,output.b64를 원하는 출력 파일명으로 교체하세요. -
임시 파일을 저장하지 않고 Base64 를 콘솔에 출력:
certutil -encode input.bin tmp.b64 && findstr /v /c:- tmp.b64 && del tmp.b64findstr /v /c:-는 certutil 이 추가하는-----BEGIN CERTIFICATE-----와-----END CERTIFICATE-----줄을 제거합니다.
Windows 에서 Base64 디코딩 (Certutil)
certutil -decode encoded.b64 decoded.bin
PowerShell 을 사용한 인코딩 및 디코딩
파일 인코딩:
[Convert]::ToBase64String([System.IO.File]::ReadAllBytes("C:\path\to\file.bin"))
문자열 인코딩 (UTF-8):
[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("Hello, World!"))
# 출력: SGVsbG8sIFdvcmxkIQ==
Base64 를 문자열로 디코딩:
[System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("SGVsbG8sIFdvcmxkIQ=="))
# 출력: Hello, World!
Base64 를 파일로 디코딩:
[System.IO.File]::WriteAllBytes("decoded.bin", [Convert]::FromBase64String((Get-Content encoded.b64 -Raw)))
이 방법들은 추가 소프트웨어 설치 없이 작동합니다. 더 많은 셸 자동화에 대해서는 PowerShell 치트시트 를 참조하세요.
Linux 에서 Base64 인코딩 및 디코딩
base64 명령은 대부분의 Linux 배포판 (GNU coreutils) 에 미리 설치되어 있습니다.
기본 구문
base64 [OPTIONS] [FILE]
파일이 없거나 - 인 경우 표준 입력에서 읽습니다.
파일을 Base64 로 인코딩
base64 input_file > output_file
예시:
base64 myfile.txt > encoded.txt
인코딩된 콘텐츠를 터미널에 출력하려면:
base64 myfile.txt
문자열을 Base64 로 인코딩
echo -n "Hello, World!" | base64
# 출력: SGVsbG8sIFdvcmxkIQ==
echo 와 함께 -n 을 사용하여 꼬리 개행 문자를 방지합니다. JWT 의 문자열 디코딩에 대해서는 JWT 토큰 디코딩 및 출력 을 참조하세요.
줄 바꿈 비활성화 (-w 0)
기본적으로 base64 는 76 자마다 출력을 줄 바꿉니다. JSON, 환경 변수, URL 또는 Terraform base64encode 사용 시 줄 바꿈을 비활성화합니다:
base64 -w 0 input_file > output_file
Linux 에서 Base64 디코딩
base64 -d encoded_file > decoded_file
# 또는
base64 --decode encoded_file > decoded_file
예시:
echo "SGVsbG8sIFdvcmxkIQ==" | base64 -d
# 출력: Hello, World!
대안: OpenSSL
echo -n "data" | openssl base64 -e
echo "ZGF0YQ==" | openssl base64 -d
더 많은 명령줄 워크플로우에 대해서는 파이프와 스크립팅을 다루는 Bash 치트시트 를 참조하세요.
macOS 에서 Base64 인코딩 및 디코딩
macOS 는 Linux 와 유사한 base64 명령을 포함하지만, 파일 입력에는 -i 플래그가 필요합니다.
파일을 Base64 로 인코딩
base64 -i input_file > output_file
예시:
base64 -i myfile.txt > encoded.txt
터미널에 출력하려면:
base64 -i myfile.txt
인코딩 및 클립보드 복사
base64 -i input_file | pbcopy
Mac 에서 Base64 디코딩
base64 -D -i encoded_file > decoded_file
-D 플래그는 디코딩 모드를 활성화하고, -i 는 입력 파일을 지정합니다. 이 명령들은 macOS 10.7 이상 모든 최신 버전에서 작동합니다.
Linux base64 명령 참조
GNU base64 도구의 전체 도움말 출력:
$ base64 --help
사용법: base64 [OPTION]... [FILE]
FILE 또는 표준 입력을 표준 출력으로 Base64 인코딩 또는 디코딩합니다.
FILE 이 없거나 FILE 이 - 일 경우 표준 입력에서 읽습니다.
긴 옵션의 필수 인수는 짧은 옵션에도 필수입니다.
-d, --decode 데이터 디코딩
-i, --ignore-garbage 디코딩 시 알파벳이 아닌 문자 무시
-w, --wrap=COLS 인코딩된 줄을 COLS 문자 후 줄 바꿈 (기본값 76).
줄 바꿈을 비활성화하려면 0 을 사용하세요.
--help 이 도움말 표시 및 종료
--version 버전 정보 출력 및 종료
데이터는 RFC 4648 에서 설명한 base64 알파벳에 따라 인코딩됩니다.
디코딩 시 입력에는 공식 base64 알파벳 바이트 외에도 개행 문자가 포함될 수 있습니다.
인코딩 스트림의 기타 알파벳이 아닌 바이트에서 복구하려면 --ignore-garbage 를 사용하세요.
...
일반적인 사용 사례
| 사용 사례 | 명령/접근 방식 |
|---|---|
| JWT 헤더/페이로드 | base64 -d 또는 jq 로 디코딩 — JWT 토큰 디코딩 및 출력 참조 |
| HTTP Basic Auth | Authorization: Basic <결과> 를 위해 echo -n "user:pass" | base64 -w 0 사용 |
| Kubernetes 시크릿 | kubectl create secret generic mysecret --from-literal=key=$(base64 -w 0 file.bin) |
| Basic Auth 와 함께 cURL | -u user:pass 또는 -H "Authorization: Basic $(echo -n user:pass | base64 -w 0)" 사용 — cURL 치트시트 참조 |
| HTML 의 데이터 URI | data:image/png;base64,$(base64 -w 0 image.png) |