Wskazówki do kodowania i dekodowania Base64: przykłady poleceń dla Windows, Linux i Mac

Koduj i dekoduj pliki do formatu Base64 w systemach Windows, Linux i Mac.

Page content

Ten przewodnik pokazuje, jak koduować i dekodować pliki oraz ciągi znaków do formatu Base64 z wiersza polecenia na systemach Windows, Linux i macOS — bez konieczności instalowania dodatkowych narzędzi.

brodaty mężczyzna wykonujący zaawansowane programowanie w nocy

Ten przewodnik jest częścią Narzędzia dla programistów: Kompletny przewodnik po nowoczesnych przepływach pracy.

Base64 konwertuje dane binarne na tekst ASCII używając 64 znaków (A–Z, a–z, 0–9, +, /). Jest szeroko stosowany do kodowania poświadczeń w HTTP Basic Auth, obciążeniach JWT (zobacz Dekodowanie i drukowanie tokena JWT), sekretach Kubernetes, URI danych w HTML/CSS oraz osadzaniu danych binarnych w JSON lub zmiennych środowiskowych. Używanie wiersza polecenia utrzymuje dane poufne lokalnie i umożliwia skryptowanie w potokach CI/CD.

Kodowanie i dekodowanie Base64 w systemie Windows

System Windows nie dostarcza dedykowanego polecenia base64, ale możesz użyć wbudowanych narzędzi.

Używanie wiersza polecenia z Certutil

  1. Otwórz Wiersz polecenia.

  2. Skoduj plik do formatu Base64:

    certutil -encode input.bin output.b64
    

    Zastąp input.bin ścieżką do swojego pliku, a output.b64 pożądaną nazwą pliku wyjściowego.

  3. Aby wydrukować Base64 do konsoli bez zapisywania tymczasowego pliku:

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

    findstr /v /c:- usuwa linie -----BEGIN CERTIFICATE----- oraz -----END CERTIFICATE-----, które dodaje certutil.

Dekodowanie Base64 w systemie Windows (Certutil)

certutil -decode encoded.b64 decoded.bin

Używanie PowerShell do kodowania i dekodowania

Skoduj plik:

[Convert]::ToBase64String([System.IO.File]::ReadAllBytes("C:\path\to\file.bin"))

Skoduj ciąg znaków (UTF-8):

[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("Hello, World!"))
# Wynik: SGVsbG8sIFdvcmxkIQ==

Dekoduj Base64 do ciągu znaków:

[System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("SGVsbG8sIFdvcmxkIQ=="))
# Wynik: Hello, World!

Dekoduj Base64 do pliku:

[System.IO.File]::WriteAllBytes("decoded.bin", [Convert]::FromBase64String((Get-Content encoded.b64 -Raw)))

Te metody działają bez instalowania dodatkowego oprogramowania. Aby dowiedzieć się więcej o automatyzacji powłoki, zobacz Skroty PowerShell.

Kodowanie i dekodowanie Base64 w systemie Linux

Polecenie base64 jest zainstalowane domyślnie w większości dystrybucji Linux (GNU coreutils).

Podstawowa składnia

base64 [OPCJE] [PLIK]

Bez pliku lub gdy plikiem jest -, odczytuje ze standardowego wejścia.

Skodowanie pliku do Base64

base64 input_file > output_file

Przykład:

base64 myfile.txt > encoded.txt

Aby wydrukować skodowaną zawartość do terminala:

base64 myfile.txt

Skodowanie ciągu znaków do Base64

echo -n "Hello, World!" | base64
# Wynik: SGVsbG8sIFdvcmxkIQ==

Użyj -n z echo, aby uniknąć końcowego znaku nowej linii. Aby dekodować ciągi w JWT, zobacz Dekodowanie i drukowanie tokena JWT.

Wyłączenie zawijania linii (-w 0)

Domyślnie base64 zawija wyjście co 76 znaków. Dla JSON, zmiennych środowiskowych, URL lub użycia Terraform base64encode, wyłącz zawijanie:

base64 -w 0 input_file > output_file

Dekodowanie Base64 w systemie Linux

base64 -d encoded_file > decoded_file
# lub
base64 --decode encoded_file > decoded_file

Przykład:

echo "SGVsbG8sIFdvcmxkIQ==" | base64 -d
# Wynik: Hello, World!

Alternatywa: OpenSSL

echo -n "data" | openssl base64 -e
echo "ZGF0YQ==" | openssl base64 -d

Więcej przepływów pracy w wierszu polecenia znajduje się w Skrotach Bash.

Kodowanie i dekodowanie Base64 w systemie macOS

macOS zawiera polecenie base64 podobne do Linuxa, ale wymaga flagi -i dla wejścia z pliku.

Skodowanie pliku do Base64

base64 -i input_file > output_file

Przykład:

base64 -i myfile.txt > encoded.txt

Aby wydrukować do terminala:

base64 -i myfile.txt

Skodowanie i kopiowanie do schowka

base64 -i input_file | pbcopy

Dekodowanie Base64 na Macu

base64 -D -i encoded_file > decoded_file

Flaga -D aktywuje tryb dekodowania; -i określa plik wejściowy. Te polecenia działają we wszystkich nowoczesnych wersjach macOS począwszy od 10.7.

Referencja polecenia base64 w systemie Linux

Pełna pomoc dla narzędzia GNU base64:

$ base64 --help

Użycie: base64 [OPCJA]... [PLIK]
Skoduj lub dekoduj PLIK, lub standardowe wejście, do standardowego wyjścia.

Bez PLIKU, lub gdy PLIK jest -, odczytaj standardowe wejście.

Argumenty wymagane dla długich opcji są wymagane również dla krótkich opcji.
  -d, --decode          dekoduj dane
  -i, --ignore-garbage  podczas dekodowania, ignoruj znaki spoza alfabetu
  -w, --wrap=KOLUMNY    zawijaj skodowane linie po KOLUMNY znakach (domyślnie 76).
                          Użyj 0, aby wyłączyć zawijanie linii
      --help        wyświetl tę pomoc i zakończ
      --version     wyświetl informacje o wersji i zakończ

Dane są kodowane zgodnie z opisem alfabetu base64 w RFC 4648.
Podczas dekodowania wejście może zawierać znaki nowej linii oprócz bajtów
formalnego alfabetu base64. Użyj --ignore-garbage, aby próbować odzyskać
z innych bajtów spoza alfabetu w strumieniu zakodowanym.
...

Częste przypadki użycia

Przypadek użycia Polecenie / podejście
Nagłówek/obciążenie JWT Dekoduj za pomocą base64 -d lub jq — zobacz Dekodowanie i drukowanie tokena JWT
HTTP Basic Auth echo -n "user:pass" | base64 -w 0 dla Authorization: Basic <wynik>
Sekret Kubernetes kubectl create secret generic mysecret --from-literal=key=$(base64 -w 0 file.bin)
cURL z Basic Auth Użyj -u user:pass lub -H "Authorization: Basic $(echo -n user:pass | base64 -w 0)" — zobacz Skroty cURL
Data URI w HTML data:image/png;base64,$(base64 -w 0 image.png)

Przydatne linki