Kódování je proces používaný k převodu dat do formátu potřebného pro efektivní přenos nebo uložení. Naproti tomu dekódování je opačná metoda než kódování, která převádí zakódovaná data zpět do původního formátu. Base64 je proces kódování, při kterém jsou binární data převedena na ASCII. Kódování Base64 je většinou nutné, aby se předešlo problémům s přenosem, které vznikají při přenosu binárních dat do textových systémů, které nedokážou binární data správně zpracovat. V důsledku toho dochází ke ztrátě nebo poškození informací při přenosu.
Některá použití kódování jsou:
- Komprimace dat
- Skrývání dat
- Přenos dat v jiném formátu
Pro kódování dat používá Base64 pouze abecedu, číslo a symbol =. Například c2FtcGxlCg== je platné kódování dat, zatímco b?HV3.Zh2J== není platné kódování dat.
V tomto článku si vysvětlíme, jak pomocí příkazu base64 kódovat a dekódovat data v řetězci nebo souboru.
Příkazy jsme provedli na systému Ubuntu 20.04 Focal Fossa. Stejné příkazy však můžete provádět i v jiných distribucích Linuxu. Pro spuštění příkazů jsme použili aplikaci příkazového řádku Terminál, kterou lze spustit pomocí klávesové zkratky Ctrl+Alt+T.
Syntaxe příkazu Base64
Zde je uvedena syntaxe kódování pomocí Base64:
Možnosti
Některé z možností příkazového řádku, které lze použít s příkazem base64, jsou následující:
Tuto volbu použijte k dekódování souboru nebo řetězce.
Tuto volbu použijte pro zobrazení nápovědy týkající se použití base64.
Tuto volbu použijte při dekódování pro ignorování nealfabetických znaků
Tuto volbu použijte pro zobrazení informací o verzi
Kódování řetězce
Příkazem base64 můžete snadno zakódovat řetězec. Například pro zakódování ukázkového textu „Welcome to Linux“ do base64 by příkaz byl následující:
Tento příkaz zakóduje text v řetězci pomocí base64 a zakódovaný text vypíše na standardní výstup, jak ukazuje následující obrázek
Zakódovaný výstup můžete také uložit do souboru namísto tisku na standardní výstup pomocí operátoru přesměrování (>). Následující příkaz zakóduje text a výstup uloží do souboru s názvem „encodedfile.txt:
Pro zobrazení zakódovaného souboru můžete použít příkaz cat:
Dekódování řetězce
Zakódovaný text base64 můžete také dekódovat pomocí volby -decode nebo -d. Například pro dekódování textu v kódování base64 „V2VsY29tZSB0byBMaW51eAo=“ by příkaz zněl:
Tento příkaz dekóduje text v kódování base64 a vypíše původní text na standardní výstup, jak ukazuje následující obrázek.
Dekódovaný výstup můžete také uložit do souboru místo tisku na standardní výstup pomocí operátoru přesměrování (>). Následující příkaz dekóduje zakódovaný text a uloží původní text do souboru s názvem „dekódovanýsoubor.txt:
Kódování textového souboru
Příkaz base64 lze použít také ke kódování textového souboru. Například pro zakódování textového souboru s názvem „testfile.txt“ by příkaz zněl:
Tento příkaz zakóduje zadaný textový soubor a vypíše jeho zakódovanou podobu na standardní výstup, jak ukazuje následující obrázek.
Kódovaný výstup můžete také uložit do souboru místo tisku na standardní výstup pomocí operátoru přesměrování (>). Následující příkaz převede text v souboru pomocí base64 a výstup uloží do jiného souboru s názvem „encodedfile.txt:
Pro zobrazení zakódovaného souboru můžete použít příkaz cat:
Dekódování textového souboru
Chcete-li dekódovat zakódovaný textový soubor, použijte volbu -decode nebo -d. Například pro dekódování textového souboru „encodedfile.txt“ v kódování base64 by příkaz zněl:
Tento příkaz dekóduje textový soubor v kódování base64 a vypíše původní text na standardní výstup, jak ukazuje následující obrázek.
Dekódovaný výstup můžete také uložit do souboru místo tisku na standardní výstup pomocí operátoru přesměrování (>). Následující příkaz dekóduje zakódovaný text a uloží původní text do souboru s názvem „dekódovanýsoubor.txt, který lze později zobrazit pomocí příkazu cat.
Kódování uživatelského vstupu
Pomocí kódování base64 můžeme zakódovat libovolná data zadaná uživatelem. Pro tento účel budeme muset vytvořit skript, který přijme uživatelský vstup, zakóduje jej pomocí kódování base64 a zakódovaná data vypíše na standardní výstup.
Vytvořte skript „test.sh“ s následujícím kódem:
# Vypište zprávu s žádostí o vstup
echo „Provide Some data to encode“
# Uložte vstup do proměnné s názvem „data“
read data
# Zakódujte pomocí kódování base64 a výstup uložte do proměnné „encod_data“
encod_data=`echo -n $data | base64`
# Vypište zakódovaný výstup
echo „Zakódovaný text je : $encod_data“
Skript spustíte takto:
Po spuštění skriptu budete vyzváni k zadání dat, která chcete zakódovat. Zadejte nějaká data a stiskněte Enter a na obrazovce se zobrazí zakódovaný výstup.
Ověřování uživatelského klíče
Nyní si ukážeme příklad dekódování base64. Dekódování base64 použijeme ke kontrole platnosti uživatele. Za tímto účelem vytvoříme skript, který se uživatele zeptá na klíč. Poté porovná vstupní klíč s předdefinovaným klíčem, který bude nejprve dekódován dekódováním base64. Pokud se klíč zadaný uživatelem shoduje s předdefinovaným klíčem, vypíše se na obrazovku zpráva „Zadali jste platný klíč“, v opačném případě se na obrazovce vypíše „Zadaný klíč není platný“
Vytvořte skript „test1.sh“ s následujícím kódem:
# Vypište zprávu s žádostí o vstup
echo „Enter your key“
# Uložte klíč zadaný uživatelem do proměnné s názvem „key“
read key
# Dekódujte zakódovaný klíč (QWJjMTIzCg) a výstup uložte do proměnné s názvem „orig_key“
orig_key=`echo ‚QWJjMTIzCg==‘ | base64 –decode`
# Porovnejte klíč zadaný uživatelem s dekódovaným klíčem
if ; then
#pokud se klíč shoduje, vypište toto:
echo „Zadali jste platný klíč“
else
#pokud se klíč neshoduje, vypište toto:
echo „Zadaný klíč není platný“
fi
Skript spustíte takto:
Po spuštění skriptu budete požádáni o zadání klíče. Zadejte klíč a stiskněte klávesu Enter. Pokud se zadaný klíč shoduje s předdefinovaným dekódovaným klíčem, zobrazí se zpráva “ Zadali jste platný klíč“, v opačném případě se na obrazovku vypíše zpráva „Zadaný klíč není platný „.
Takto můžete použít base64 pro kódování a dekódování řetězce nebo souboru z příkazového řádku. Výsledky lze buď vypsat na standardní výstup, nebo uložit do souboru. Nezapomeňte však, že kódování není podobné šifrování a lze snadno odhalit zakódovaná data, proto se nedoporučuje používat kódování pro přenos citlivých dat.