Kodowanie i dekodowanie Base64 z wiersza poleceń

Kodowanie jest procesem używanym do konwersji danych w formacie wymaganym do efektywnej transmisji lub przechowywania. Z kolei dekodowanie jest procesem przeciwnym do metody kodowania, który przekształca zakodowane dane z powrotem do ich oryginalnego formatu. Base64 jest procesem kodowania, w którym dane binarne są konwertowane na ASCII. Kodowanie Base64 jest wymagane głównie w celu uniknięcia problemów z transmisją, które występują, gdy dane binarne są przesyłane do systemów tekstowych, które nie potrafią poprawnie obsługiwać danych binarnych. W rezultacie, informacja jest tracona lub uszkodzona podczas transmisji.

Niektóre z zastosowań kodowania to:

  • Kompresja danych
  • Ukrywanie danych
  • Przekazywanie danych w innym formacie

Do kodowania danych, Base64 używa tylko alfabetu, liczby i symbolu =. Na przykład, c2FtcGxlCg== jest poprawną zakodowaną daną, podczas gdy b?HV3.Zh2J== nie jest poprawną zakodowaną daną.

W tym artykule wyjaśnimy, jak używać polecenia base64 do kodowania i dekodowania danych w łańcuchu lub pliku.

Wykonaliśmy polecenia na systemie Ubuntu 20.04 Focal Fossa. Możesz jednak uruchomić te same komendy także na innych dystrybucjach Linuksa. Do uruchomienia poleceń użyliśmy aplikacji Terminal, do której dostęp można uzyskać za pomocą skrótu klawiaturowego Ctrl+Alt+T.

Składnia base64

Tutaj jest składnia kodowania przy użyciu Base64:

base64

Opcje

Niektóre z opcji wiersza poleceń, które mogą być użyte z poleceniem base64 to:

-d lub –decode

Użyj tej opcji, aby zdekodować plik lub ciąg znaków.

–help

Użyj tej opcji, aby wyświetlić pomoc dotyczącą użycia base64.

-i, –ignore-garbage

Użyj tej opcji podczas dekodowania, aby zignorować znaki niealfabetyczne

–version

Użyj tej opcji, aby wyświetlić informacje o wersji

Kodowanie łańcucha

Możesz łatwo zakodować łańcuch używając polecenia base64. Na przykład, aby zakodować przykładowy tekst „Witamy w Linuksie” do base64, polecenie brzmiałoby:

$ echo „Witamy w Linuksie” | base64

To polecenie zakoduje tekst w łańcuchu za pomocą base64 i wydrukuje zakodowany tekst na standardowe wyjście, jak pokazano na poniższym zrzucie ekranu

Możesz również zapisać zakodowany tekst wyjściowy do pliku zamiast drukować go na standardowe wyjście za pomocą operatora przekierowania (>). Poniższe polecenie zakoduje tekst i zapisze wyjście do pliku o nazwie „encodedfile.txt:

$ echo „Welcome to Linux” | base64 > encodedfile.txt

Aby zobaczyć zakodowany plik, możesz użyć polecenia cat:

$ cat encodedfile.txt

Dekodowanie łańcucha

Możesz także zdekodować zakodowany tekst base64 używając opcji -decode lub -d. Na przykład, aby zdekodować tekst zakodowany base64 „V2VsY29tZSB0byBMaW51eAo=”, polecenie byłoby następujące:

$ echo „V2VsY29tZSB0byBMaW51eAo=” | base64 –decode

To polecenie zdekoduje tekst zakodowany base64 i wydrukuje oryginalny tekst na standardowym wyjściu, jak pokazano na poniższym zrzucie ekranu.

Możesz również zapisać zdekodowany tekst wyjściowy do pliku zamiast drukować go na standardowym wyjściu, używając operatora przekierowania (>). Następujące polecenie zdekoduje zakodowany tekst i zapisze oryginalny tekst do pliku o nazwie „decodedfile.txt:

$ echo „V2VsY29tZSB0byBMaW51eAo=” | base64 -decode > decodedfile.txt

Kodowanie pliku tekstowego

Komenda base64 może być również użyta do kodowania pliku tekstowego. Na przykład, aby zakodować plik tekstowy o nazwie „testfile.txt”, polecenie byłoby następujące:

$ base64 testfile.txt

To polecenie zakoduje podany plik tekstowy i wydrukuje jego zakodowaną postać na standardowym wyjściu, jak pokazano na poniższym zrzucie ekranu.

Można również zapisać zakodowany tekst wyjściowy do pliku zamiast drukować go na standardowym wyjściu za pomocą operatora przekierowania (>). Poniższe polecenie przekonwertuje tekst w pliku przy użyciu base64 i zapisze dane wyjściowe do innego pliku o nazwie „encodedfile.txt:

Aby obejrzeć zakodowany plik, można użyć polecenia cat:

$ cat encodedfile.txt

Dekodowanie pliku tekstowego

Aby zdekodować zakodowany plik tekstowy, należy użyć opcji -decode lub -d. Na przykład, aby zdekodować zakodowany plik tekstowy base64 „encodedfile.txt”, polecenie byłoby następujące:

$ base64 -d encodedfile.txt

To polecenie zdekoduje zakodowany plik tekstowy base64 i wydrukuje oryginalny tekst na standardowym wyjściu, jak pokazano na poniższym zrzucie ekranu.

Możesz również zapisać zdekodowane dane wyjściowe do pliku zamiast drukować je na standardowym wyjściu, używając operatora przekierowania (>). Poniższe polecenie zdekoduje zakodowany tekst i zapisze oryginalny tekst do pliku o nazwie „decodedfile.txt”, który można później przeglądać za pomocą polecenia cat.

$ base64 -d encodedfile.txt > decodedfile.txt

Kodowanie danych wejściowych użytkownika

Używając kodowania base64, możemy zakodować dowolne dane dostarczone przez użytkownika. W tym celu będziemy musieli utworzyć skrypt, który będzie pobierał dane wejściowe użytkownika, kodował je przy użyciu kodowania base64 i wypisywał zakodowane dane na standardowym wyjściu.

Utwórz skrypt „test.sh” z następującym kodem:

#!/bin/bash
# Wydrukuj komunikat z prośbą o podanie danych wejściowych
echo „Provide Some data to encode”
# Zapisz dane wejściowe do zmiennej o nazwie „data”
read data
# Zakoduj przy użyciu kodowania base64 i zapisz dane wyjściowe do zmiennej „encod_data”
encod_data=`echo -n $data | base64`
# Wydrukuj zakodowane dane wyjściowe
echo „Encoded text is : $encod_data”

Run the script as follows:

$ ./test.sh

Po uruchomieniu skryptu zostaniesz poproszony o wprowadzenie danych, które chcesz zakodować. Wpisz jakieś dane i naciśnij Enter, a otrzymasz zakodowane dane wyjściowe na ekranie.

Weryfikacja klucza użytkownika

Zobaczmy teraz przykład dekodowania base64. Wykorzystamy dekodowanie base64 do sprawdzenia poprawności użytkownika. W tym celu stworzymy skrypt, który poprosi użytkownika o podanie klucza. Następnie dopasuje on klucz wejściowy do predefiniowanego klucza, który zostanie najpierw zdekodowany przez dekodowanie base64. Jeśli klucz wprowadzony przez użytkownika zgadza się z kluczem predefiniowanym, zostanie wyświetlony komunikat „You have entered a valid key”, w przeciwnym razie na ekranie pojawi się komunikat „The key you have entered is not valid”.

Stwórz skrypt „test1.sh” z następującym kodem:

#!-decode`
# Porównaj klucz wprowadzony przez użytkownika z kluczem zdekodowanym
if ; then
# if key matches, print this:
echo „You have entered a valid key”
else
# if key does not match, print this:
echo „The key you have entered is not valid”
fi

Run the script as follows:

$ ./test1.sh

Po uruchomieniu skryptu zostaniesz poproszony o podanie klucza. Wpisz klucz i naciśnij Enter. Jeśli wprowadzony klucz pasuje do wcześniej zdefiniowanego zdekodowanego klucza, otrzymasz komunikat „Wprowadziłeś prawidłowy klucz”, w przeciwnym razie na ekranie zostanie wyświetlony komunikat „Wprowadzony klucz nie jest prawidłowy”.

W ten sposób można użyć base64 do kodowania i dekodowania łańcucha lub pliku z wiersza poleceń. Wyniki mogą być wypisane na standardowe wyjście lub zapisane w pliku. Pamiętaj jednak, że kodowanie nie jest podobne do szyfrowania, i można łatwo ujawnić zakodowane dane, więc nie zaleca się używania kodowania do przesyłania wrażliwych danych.

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.