Base64-kodning och avkodning från kommandoraden

Kodning är den process som används för att konvertera data till ett format som krävs för effektiv överföring eller lagring. Avkodning är däremot motsatsen till kodningsmetoden som omvandlar de kodade uppgifterna tillbaka till sitt ursprungliga format. Base64 är en kodningsprocess där binära data omvandlas till ASCII. Base64-kodning krävs oftast för att undvika de överföringsproblem som uppstår när binära data överförs till textbaserade system som inte kan hantera binära data korrekt. Resultatet blir att informationen går förlorad eller skadas under överföringen.

Några användningsområden för kodning är:

  • Datakomprimering
  • Dataskydd
  • Överföring av data i ett annat format

För kodning av data använder Base64 endast alfabetet, siffran och =-symbolen. Till exempel är c2FtcGxlCg== en giltig kodad data medan b?HV3.Zh2J== inte är en giltig kodad data.

I den här artikeln kommer vi att förklara hur man använder base64-kommandot för att koda och avkoda data i en sträng eller en fil.

Vi har utfört kommandona på Ubuntu 20.04 Focal Fossa-system. Du kan dock även köra samma kommandon på andra Linuxdistributioner. För att köra kommandona har vi använt kommandoradstillämpningen Terminal, som kan nås med hjälp av tangentbordsgenvägen Ctrl+Alt+T.

Base64 Syntax

Här är syntaxen för kodning med Base64:

base64

Optioner

Några av de kommandoradsalternativ som kan användas med base64 kommandot är:

-d eller –decode

Använd detta alternativ för att avkoda en fil eller en sträng.

–help

Använd det här alternativet för att visa hjälp om användningen av base64.

-i, –ignore-garbage

Använd det här alternativet vid avkodning för att ignorera icke-alfabetiska tecken

–version

Använd det här alternativet för att visa versionsuppgifter

Kodning av strängar

Du kan enkelt koda en sträng med kommandot base64. Om du till exempel vill koda en exempeltext ”Welcome to Linux” till base64 skulle kommandot vara:

$ echo ”Welcome to Linux” | base64

Detta kommando kommer att koda texten i strängen med hjälp av base64 och skriva ut den kodade texten till standardutmatningen enligt följande skärmdump

Du kan också spara den kodade utmatningen i en fil i stället för att skriva ut den till standardutmatningen med hjälp av omdirigeringsoperatören (>). Följande kommando kodar texten och sparar utmatningen i en fil med namnet ”encodedfile.txt:

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

För att visa den kodade filen kan du använda kommandot cat:

$ cat encodedfile.txt

Avkodning av strängar

Du kan också avkoda den base64-kodade texten med hjälp av alternativet -decode eller -d. För att avkoda den base64-kodade texten ”V2VsY29tZSB0byBMaW51eAo=” skulle kommandot till exempel vara:

$ echo ”V2VsY29tZSB0byBMaW51eAo=” | base64 –decode

Detta kommando avkodar den base64-kodade texten och skriver ut originaltexten på standarduppgiften, vilket visas i följande skärmdump.

Du kan också spara den avkodade utgången till en fil i stället för att skriva ut till standardutgången med hjälp av omdirigeringsoperatören (>). Följande kommando avkodar den kodade texten och sparar originaltexten i en fil med namnet ”decodedfile.txt:

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

Kodning av textfil

Base64-kommandot kan också användas för att koda en textfil. För att koda en textfil som heter ”testfile.txt” skulle kommandot till exempel vara:

$ base64 testfile.txt

Detta kommando kommer att koda den angivna textfilen och skriva ut dess kodade form på standarduppgiften som visas i följande skärmdump.

Du kan också spara den kodade utgången till en fil i stället för att skriva ut till standardutgången med hjälp av omdirigeringsoperatören (>). Följande kommando konverterar texten i filen med base64 och sparar utmatningen till en annan fil med namnet ”encodedfile.txt:

För att visa den kodade filen kan du använda kommandot cat:

$ cat encodedfile.txt

Avkodning av textfil

För att avkoda en kodad textfil använder du alternativet -decode eller -d. För att avkoda den base64-kodade textfilen ”encodedfile.txt” skulle kommandot till exempel vara:

$ base64 -d encodedfile.txt

Detta kommando avkodar den base64-kodade textfilen och skriver ut originaltexten på standarduppgiften som visas i följande skärmdump.

Du kan också spara den avkodade utgången till en fil i stället för att skriva ut till standardutgången med hjälp av omdirigeringsoperatören (>). Följande kommando avkodar den kodade texten och sparar originaltexten i en fil med namnet ”decodedfile.txt som senare kan visas med hjälp av kommandot cat.

$ base64 -d encodedfile.txt > decodedfile.txt

Kodning av användarinmatning

Med hjälp av base64-kodningen kan vi koda alla data som tillhandahålls av användaren. För detta ändamål behöver vi skapa ett skript som tar emot användarinmatning, kodar den med hjälp av base64-kodning och skriver ut de kodade uppgifterna på standardutgången.

Skapa ett skript ”test.sh” med följande kod:

#!/bin/bash
# Skriv ut ett meddelande för att be om inmatning
echo ”Provide Some data to encode”
# Spara inmatningen till en variabel som heter ”data”
read data
# Kodning med hjälp av base64-kodning och spara utmatningen till en variabel ”encod_data”
encod_data=`echo -n $data | base64`
# Skriv ut den kodade utmatningen
echo ”Encoded text is : $encod_data”

Kör skriptet på följande sätt:

$ ./test.sh

När du har kört skriptet kommer du att bli ombedd att ange de data som du vill koda. Skriv in några data och tryck på Enter, så får du det kodade resultatet på skärmen.

Validering av användarnyckel

Nu ska vi se ett exempel på base64-avkodning. Vi kommer att använda base64-avkodningen för att kontrollera användarens giltighet. För att göra detta kommer vi att skapa ett skript som kommer att be användaren om en nyckel. Sedan kommer det att matcha den inmatade nyckeln med den fördefinierade nyckeln, som först kommer att avkodas med hjälp av base64-avkodning. Om den nyckel som användaren har angett stämmer överens med den fördefinierade nyckeln kommer den att skriva ut meddelandet ”Du har angett en giltig nyckel”, i annat fall kommer du att se meddelandet ”Nyckeln du har angett är inte giltig” skrivas ut på skärmen.

Skapa ett skript ”test1.sh” med följande kod:

#!/bin/bash
# Skriv ut meddelandet för att be om inmatning
echo ”Enter your key”
# Spara den nyckel som användaren har angett i en variabel som heter ”key”
read key
# Avkoda den kodade nyckeln (QWJjMTIzCg) och spara utdata i en variabel som heter ”orig_key”
orig_key=`echo ’QWJjMTIzCg==’ | base64 –decode`
# Jämför den nyckel som användaren har angett med den avkodade nyckeln
if ; then
# Om nyckeln stämmer, skriv ut detta:
echo ”You have entered a valid key”
else
#if key matches, print this:
echo ”The key you have entered is not valid”
fi

Kör skriptet på följande sätt:

$ ./test1.sh

När du har kört skriptet kommer du att bli tillfrågad om nyckeln. Skriv in nyckeln och tryck på Enter. Om den inmatade nyckeln stämmer överens med den fördefinierade avkodade nyckeln får du meddelandet ” You have entered a valid key”, annars skrivs meddelandet ”The key you have entered is not valid” ut på skärmen.

Detta är hur du kan använda base64 för att koda och avkoda en sträng eller en fil från kommandoraden. Resultaten kan antingen skrivas ut på standardutgången eller sparas i en fil. Kom dock ihåg att kodning inte liknar kryptering och att man lätt kan avslöja de kodade uppgifterna, så det rekommenderas inte att använda kodning för överföring av känsliga uppgifter.

Lämna ett svar

Din e-postadress kommer inte publiceras.