Base64 인코딩/디코딩 치트시트: Windows, Linux, Mac 명령어 예시

Windows, Linux 및 Mac 에서 파일을 Base64 로 인코딩하고 디코딩합니다.

Page content

이 치트시트는 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 을 사용한 명령 프롬프트 사용

  1. 명령 프롬프트를 엽니다.

  2. 파일을 Base64 로 인코딩:

    certutil -encode input.bin output.b64
    

    input.bin 을 파일 경로로, output.b64 를 원하는 출력 파일명으로 교체하세요.

  3. 임시 파일을 저장하지 않고 Base64 를 콘솔에 출력:

    certutil -encode input.bin tmp.b64 && findstr /v /c:- tmp.b64 && del tmp.b64
    

    findstr /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)

유용한 링크